[英]Advantage of $PATH over alias
我对Linux和Unix比较陌生。 在互联网的帮助下,我终于想出了我的.bashrc
$PATH
和别名是如何工作的。
但我真的找不到任何描述何时使用哪个。
假设我在Library / Frameworks中安装了Python3.3,可执行文件是/Library/Frameworks/Python.framework/Versions/3.3/bin/python3
,但是我想通过在我的终端中键入python3
来执行python 3.3。
当我理解正确时,有(至少)三种方法来实现这一点:
1)我在.bashrc中修改$ PATH:
export PATH=/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH}
2)我在.bashrc中设置了一个别名:
alias python3=/Library/Frameworks/Python.framework/Versions/3.3/bin
3)创建符号链接(符号链接):
ln -s /Library/Frameworks/Python.framework/Versions/3.3/bin /usr/local/bin
你会说(根据你的经验)是“推荐”的方式吗?
将python3
放在路径中是在文件系统中找到自己的地方调用它的正确方法。 符号链接是将该命令更改为python
并保持脚本不依赖于版本的最佳方法(您可以运行依赖于python的脚本使用符号链接和需要python 3.0的脚本专门使用python3,即使在您的计算机上他们是一样的东西)。 符号链接仍然是文件系统中的文件,因此它们仍然需要在您的路径中。
我只看到当你试图创建某种行为时使用的别名,这种行为与命令行实用程序的默认行为不同,比如静默添加-s的ls
的别名。
此外,符号链接也存储在文件系统中,因此一旦创建,它们就会存在于登录的所有其他用户,而别名仅适用于已定义它们的登录用户。 他们还可以应用文件权限。
这是一篇有趣的文章,介绍了你可以通过.bash_profile
对你的终端做些什么,包括一些很棒的别名。
首先,没有理由在/Library/Frameworks/
目录中安装Python。 我的建议是(至少对初学者而言)你不应该添加像/Library
这样的顶级目录。 如果你从源代码编译它,你应该用标准./configure
构建它 (它可能进入/usr/local/
)
我不太了解从源代码编译Python,但大多数Linux源代码默认获得./configure
-d到/usr/local/
prefix所以他们的二进制文件进入/usr/local/bin/
这通常已经默认情况下在PATH
一些Linux发行版有一个/etc/profile
,间接地,如果目录$HOME/bin/
存在,则将它添加到你的PATH
; 在这种情况下,只需添加二进制文件和脚本(或符号链接),这是最简单的方法。
我的一般建议是避免使用非常长或非常具体的PATH
。 特别是,在每个产品的PATH
添加一个目录是恕我直言,这是一个错误。 请参阅例如GNU编码标准的目录变量部分 ,并保持PATH
非常短。 我个人只在/usr/local/bin/
(系统范围)或$HOME/bin/
添加程序,可能作为符号链接(因此我不会更改我的PATH
因为它已包含/usr/local/bin/
和$HOME/bin
)。
根据过去的经验,拥有非常长的PATH
是一场噩梦,并且会降低您的交互式外壳的速度
如果您使用不同版本的Python,我建议您选择别名,以便更容易发生冲突。 shell将查找PATH变量,并且只要它与Python的可执行文件匹配,它就会执行它。 别名必须放在你的shell配置文件中,如.bash_profile
。
谢谢大家的解释。
正如我已经说过的,我对Unix和Linux都很陌生。 我刚刚为我的博客写了一篇关于其他“新手”的文章(别名,符号链接$ PATH)。 我喜欢写这些东西,因为他们真的很感兴趣,我想分享我的经历 - 我希望他们也对其他人有所帮助。 此外,如果我必须解释一些事情,它有助于我加深理解 - 这也是一个很好的未来参考!
如果你能很快浏览一下这篇文章会很好,如果我有些不对劲,我会对建议感到高兴!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.