我对Linux和Unix比较陌生。在互联网的帮助下,我终于弄清楚了$PATH
中.bashrc
和别名的工作原理。
但我真的找不到任何描述何时使用它的东西。
假设我在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
你会说(根据你的经验)是“推荐”的方式吗?
答案 0 :(得分:7)
在您的路径中放置python3
是在文件系统中找到自己的任何位置调用它的正确方法。符号链接是将该命令更改为python
并保持脚本不依赖于版本的最佳方法(您可以运行依赖于python的脚本使用符号链接和需要python 3.0的脚本专门使用python3,甚至虽然在你的电脑上他们是一样的东西)。符号链接仍然是文件系统中的文件,因此它们仍然需要在您的路径中。
我只看到当您尝试创建某种行为时使用的别名,这种行为与命令行实用程序的默认行为不同,例如ls
的别名,它会静默添加。
此外,符号链接也存储在文件系统中,因此一旦创建,它们就会存在于所有其他登录用户,而别名仅适用于已定义它们的登录用户。他们还可以应用文件权限。
以下a fun article是关于您可以通过.bash_profile
向终端执行的操作,包括一些很棒的别名。
答案 1 :(得分:4)
首先,没有理由在/Library/Frameworks/
目录中安装Python。我的建议是(至少对初学者而言)你不应该像你的/Library
那样添加顶级目录。如果您从源代码编译它,您应该built it标准为./configure
(它可能会进入/usr/local/
)
我不太了解从源代码编译Python,但大多数Linux源代码默认情况下./configure
- d到/usr/local/
前缀,所以他们的二进制文件进入/usr/local/bin/
默认情况下,您的PATH
某些Linux发行版有一个/etc/profile
,间接地,如果目录$HOME/bin/
存在,则将其添加到PATH
;在这种情况下,只需添加二进制文件和脚本(或符号链接),这是最简单的方法。
我的一般建议是避免使用非常长或非常具体的PATH
。特别是,在PATH
内为每个产品添加目录是恕我直言,这是一个错误。参见例如directory-variables section of GNU coding standards,并保持PATH
很短。我个人只在/usr/local/bin/
(系统范围)或$HOME/bin/
中添加程序,可能作为符号链接(因此我不会更改我的PATH
,因为它已包含/usr/local/bin/
}和$HOME/bin
)。
根据过去的经验,有一段很长的PATH
是一场噩梦,会减慢你的互动炮弹
答案 2 :(得分:0)
如果您使用不同版本的Python,我建议您选择别名,以便更容易发生冲突。 shell将查找PATH变量,并且只要它与Python的可执行文件匹配,它就会执行它。别名必须放在您的shell配置文件中,如.bash_profile
。
答案 3 :(得分:0)
谢谢大家的解释。
正如我已经说过的,我对Unix和Linux都很陌生。我刚刚为我的博客写了一篇关于其他“新手”的文章(别名,符号链接$ PATH)。我喜欢写这些东西,因为他们真的很感兴趣,我想分享我的经历 - 我希望他们也对其他人有所帮助。此外,如果我必须解释事情,它有助于我加深理解 - 这也是一个很好的未来参考!
如果你能快速浏览一下这篇文章会很好,如果我有些不对劲,我会对建议感到高兴!