【问题标题】:Mac OS X: How do I run binaries that are outside usr/local/bin?Mac OS X:如何运行 usr/local/bin 之外的二进制文件?
【发布时间】:2014-09-19 11:36:26
【问题描述】:

我安装了一个程序,它不会自动将其二进制文件放入 usr/local/bin 中。这意味着每当我在该程序中运行脚本时,都会经常发生“找不到命令”错误。我可以通过将二进制文件复制粘贴到 usr/local/bin 目录来解决此问题,但我不想每次都为每个二进制文件都这样做。使脚本工作的更有效方法是什么?

非常感谢您!

【问题讨论】:

    标签: macos osx-mavericks binaryfiles bin


    【解决方案1】:

    可执行文件通过$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
    

    【讨论】:

    • OSX 没有~/.profile(它是~/.bash_profile),并且您的符号链接参数是从后到前的。
    • OS X 确实~/.profile,我正在使用它。而ln 定义为ln [-Ffhinsv] source_file [target_file]
    • 当然您可以使用~/.profile,但使用~/.bash_profile 似乎是更正常的选择。至于ln 命令行,我认为您没有正确考虑过这一点。不挂断;除非新的二进制文件在 /home/me/bin?
    • 好的,我明白了。我误解了。我本来希望$HOME/bin 无论如何都会在路上。
    • 是的,ln 示例建立在上一个示例 ~/bin 的基础上。
    【解决方案2】:

    通过编辑~/.bash_profile,将包含二进制文件的目录添加到您的$PATH 环境变量中:

    export PATH=$PATH:/your/new/path
    

    您也可以编辑/etc/paths 或将文件添加到/etc/paths.d,但您需要拥有管理员权限才能执行此操作。

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 2019-10-14
      • 1970-01-01
      • 2020-04-21
      • 2015-02-03
      • 2011-07-18
      • 2014-08-05
      • 2013-06-10
      • 1970-01-01
      相关资源
      最近更新 更多