首页 > 解决方案 > 为什么 /usr/local/bin 中的自制符号链接/别名不能按“which”命令的预期工作?

问题描述

我最近一直在创建 bash 脚本,并希望将它们存储在我的/usr/local/bin目录中。当我在ls这个目录中时,我看到了许多我相信的符号链接路径。例子:

brew -> /usr/local/HomeBrew/bin/brew

我已经能够成功地为我自己的脚本创建符号链接,并/usr/local/bin使用以下ln命令将它们存储在我的脚本中:

ln -s /User/me/Projects/bash/my_script /usr/local/bin/my_script

一切都按预期运行。

我遇到的问题是,当我尝试运行which my_script它时,它没有返回一个好的标准输出结果,就像其他脚本一样。例如运行which brew返回:/usr/local/bin/brew以一个很好的标准输出格式与其他命令一起使用。

运行which my_script,将成功检测到我的脚本,但返回

my_script: aliased to ~/Projects/bash/my_script

这使得与其他命令的组合更加困难。

谁能解释一下有什么区别,以及我该如何解决这个问题?

标签: bashmacossymlinkbin

解决方案


您必须定义了一个名为 的别名my_script,它隐藏了您的符号链接。你可以做一个

type -a my_script

找到所有定义。要绕过别名,请使用

command my_script

除此之外:你确定你真的想要一个链接/usr/local/bin到你下面的东西/User/me吗?这在我看来并不理智。/User/me/Projects/bash简单地放入你的PATH不是更好吗?


推荐阅读