我知道我可以使用命令在 bash 终端上添加 $PATH 的路径PATH=$PATH:foo
。我也知道我可以使用以下命令为 bash 创建别名alias a=b
但只知道我注意到 bash 的别名不是全局别名,并且某些工具可能无法找到(这是非常合理的,如果文档说工具只是搜索路径中的另一个依赖项)。
那么,如何向路径中添加不同名称的内容,以便其他命令行工具可以轻松找到它?我可以想到我的问题至少有三种用途[g++9作为默认值(这可以通过更新替代方案来解决),python 3作为默认值而不是2],但是当我尝试安装时出现了我的主要问题巴泽利斯克作为 bazel 因为tensorflow
通过源配置构建需要bazel
,对于我在默认目录中安装的信息,这bazel
是go
~/go/bin/bazelisk
答案1
您可以分两步完成:
- 确保您的路径以要在其中提供“别名”的目录开头。例如,我们可以使用目录
bin/
中的目录$HOME
:
export PATH=$HOME/bin:$PATH
- 将别名放入该目录中,如下所示符号链接。例如,
python
要创建别名python3
,请运行
ln -s $(which python3) $HOME/bin/python
笔记:
- 您不需要这样做
root
。 - 执行此操作时要小心。做一些“奇怪”的事情就像
ln -s /bin/cat $HOME/bin/ls
和邻居说话并称汽车为鱼一样会适得其反。 - 您的“别名”目录不需要特殊名称。我们并不是在这里发明一个新概念,我们只是直接使用
$PATH
工作原理。 - 如果您的“别名”目录位于最后,则它将不起作用
$PATH
,它必须位于第一个。 - 不要替换
which
为command -v
.command -v
行为不当:它将打印别名、打印没有路径的 shell 内置命令,在无法创建符号链接的情况下,它将成功给出错误结果,而which
会可靠地返回空字符串并将退出状态设置为1
,允许 shell 脚本使用if alias=$(which python3) ; then ln -s $alias ~/bin/python ; fi
.或者通过使用失败set -e; alias=$(which python3); ln -s $alias ~/bin/python
。command -v
如果使用别名和 shell 内置命令,则使用会给出错误的结果。