【发布时间】:2014-09-19 11:36:26
【问题描述】:
我安装了一个程序,它不会自动将其二进制文件放入 usr/local/bin 中。这意味着每当我在该程序中运行脚本时,都会经常发生“找不到命令”错误。我可以通过将二进制文件复制粘贴到 usr/local/bin 目录来解决此问题,但我不想每次都为每个二进制文件都这样做。使脚本工作的更有效方法是什么?
非常感谢您!
【问题讨论】:
标签: macos osx-mavericks binaryfiles bin
我安装了一个程序,它不会自动将其二进制文件放入 usr/local/bin 中。这意味着每当我在该程序中运行脚本时,都会经常发生“找不到命令”错误。我可以通过将二进制文件复制粘贴到 usr/local/bin 目录来解决此问题,但我不想每次都为每个二进制文件都这样做。使脚本工作的更有效方法是什么?
非常感谢您!
【问题讨论】:
标签: macos osx-mavericks binaryfiles bin
可执行文件通过$PATH 变量简单地解析。它设置为类似
PATH="/bin:/usr/local/bin:..."
(试试$ echo $PATH。)
当你输入命令时:
$ foo
将依次尝试每个路径,并执行第一个匹配的可执行文件。
/bin/foo
/usr/local/bin/foo
要在默认路径之外执行某些操作,只需输入可执行文件的完整路径即可:
$ /home/me/bin/foo
$ cd /home/me/bin
$ ./foo
如果您发现自己需要经常这样做并且想要捷径,请更改您的路径:
export PATH="$PATH:/home/me/bin"
(将其放入您的 shell 启动脚本中,如 ~/.profile 以自动执行该操作。)
或者,将可执行文件符号链接到路径中的某个位置:
$ ln -s /home/me/bin/foo /usr/local/bin/foo
【讨论】:
~/.profile(它是~/.bash_profile),并且您的符号链接参数是从后到前的。
~/.profile,我正在使用它。而ln 定义为ln [-Ffhinsv] source_file [target_file]。
~/.profile,但使用~/.bash_profile 似乎是更正常的选择。至于ln 命令行,我认为您没有正确考虑过这一点。不挂断;除非新的二进制文件在 /home/me/bin?
$HOME/bin 无论如何都会在路上。
ln 示例建立在上一个示例 ~/bin 的基础上。
通过编辑~/.bash_profile,将包含二进制文件的目录添加到您的$PATH 环境变量中:
export PATH=$PATH:/your/new/path
您也可以编辑/etc/paths 或将文件添加到/etc/paths.d,但您需要拥有管理员权限才能执行此操作。
【讨论】: