如何更新$ PATH

时间:2010-09-16 19:17:28

标签: python scripting path bash

我正在编写一个python / pygtk应用程序,它在$ HOME中的某个文件夹中添加一些自定义脚本(bash)(例如~/.custom_scripts)。

我想在$PATH中提供该文件夹。所以每次python应用程序添加脚本时,当用户打开终端(例如gnome-terminal)时,该脚本可以立即可用。

你在哪里建议“注入”$ PATH依赖? .bashrc/etc/profile.d等? 我可能会遇到哪些优点/缺点?

例如,如果我添加一个脚本来导出/etc/profile.d中的新路径,则在重新登录之前,路径不会更新。

由于

7 个答案:

答案 0 :(得分:2)

如果是每用户安装,

.profile将是一个合理的地方; /etc/profile.d用于系统范围的安装。 (当然,你需要root才能做到这一点。)

您的安装程序将无法更改当前shell的路径(除非它通过source运行,这将是......奇怪的。)

答案 1 :(得分:2)

对于进入$ HOME目录的脚本,您通常使用$ HOME / bin文件夹,而不是(通常)在路径上。

答案 2 :(得分:1)

/etc/profile.d会将其添加到每个用户的路径

〜/ .bashrc就是你自己的

你总是可以“$ source~ / .bashrc”来重新读取配置文件。

答案 3 :(得分:1)

编辑:我误解了原始问题,因此此代码段仅对修改PATH有用,但不能用于保留它...

这可以使用os模块完成:

import os
USER_HOME = os.path.expanduser('~')
os.environ['PATH'] += ":" + os.path.join(USER_HOME, '.custom_scripts')

这会将:~/.custom_scripts追加到$PATH的末尾,因为PATH必须始终以冒号分隔。

答案 4 :(得分:1)

每次打开gnome-terminal时都会读取

〜/ .bashrc(假设用户已将SHELL设置为/ bin / bash)。

请务必检查os.environ ['PATH']以查看目录是否已添加,以便脚本不会多次添加该目录。

答案 5 :(得分:1)

你不应该。用户选择他是否想要PATH,在什么情况下以及如何实现这一目标。您可以做的是告知用户脚本所在的目录,并建议将其放在PATH

或者你可能从用户的角度提问?

答案 6 :(得分:0)

为什么不在第一次调用模块时(即在模块的PATH中)建立适当的__init__.py

# this is your module's __init__.py
import sys
eggs = ['/path/to/egg/1.egg', '/path/to/egg/2.egg']
for egg in eggs:
    sys.path.append(egg)