我正在编写一个python / pygtk应用程序,它在$ HOME中的某个文件夹中添加一些自定义脚本(bash)(例如~/.custom_scripts
)。
我想在$PATH
中提供该文件夹。所以每次python应用程序添加脚本时,当用户打开终端(例如gnome-terminal)时,该脚本可以立即可用。
你在哪里建议“注入”$ PATH依赖? .bashrc
,/etc/profile.d
等?
我可能会遇到哪些优点/缺点?
例如,如果我添加一个脚本来导出/etc/profile.d中的新路径,则在重新登录之前,路径不会更新。
由于
答案 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)
〜/ .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)