繁体   English   中英

$ PATH优于别名

[英]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)。 我喜欢写这些东西,因为他们真的很感兴趣,我想分享我的经历 - 我希望他们也对其他人有所帮助。 此外,如果我必须解释一些事情,它有助于我加深理解 - 这也是一个很好的未来参考!

如果你能很快浏览一下这篇文章会很好,如果我有些不对劲,我会对建议感到高兴!

http://scientific-ocean.com/2013/02/17/an-introduction-to-linuxunix-executables-path-aliases-and-symlinks/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM