在我的 .bash_profile 中正确格式化 PYTHONPATH

4
我想在我的.bash_profile中添加PYTHONPATH,但希望确认我是否正确操作。 我的.bash_profile(不含PYTHONPATH)如下:
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/user/condor/bin:/home/user/merlin/bin

export PATH

我想要添加到PYTHONPATH的路径是:

/home/user/merlin/bin/strats/

因此,我的更新后的.bash_profile文件(带有PYTHONPATH)如下所示:
    # .bash_profile

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi

    # User specific environment and startup programs

    PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/user/condor/bin:/home/user/merlin/bin

    export PATH

    export PYTHONPATH=/home/user/merlin/bin/strats/

我该如何正确格式化这段内容?

2
嗯... .bash_profile 是配置任何你想在交互式 shell 中拥有的环境变量的地方。如果这是你想要的,并且你的 Python 程序正在正确地从该目录导入模块,我会说一切都很好。唯一需要注意的是,如果系统范围的设置(即:/etc/environment、/etc/profile、/etc/profile.d/ 或 /etc/bash.bashrc)已经继承了 PYTHONPATH 变量,那么你将覆盖之前设置的任何内容。 - Alexandre Juma
你有测试的机会吗?如果答案帮助你解决了问题,请接受它或评论它,以便进一步完善。 - Alexandre Juma
1个回答

3
如果你希望在交互式登录shell中拥有关于PYTHONPTAH环境变量内容的唯一所有者和决策者,那么你做得很正确:将其添加到~/.bash_profile或~/.profile文件中。"最初的回答"。
export PYTHONPATH=/home/user/merlin/bin/strats/

如果您想继承任何系统范围内的PYTHONPATH环境变量设置,则应该: ~/.bash_profile~/.profile 将其添加到上述文件中即可。
export PYTHONPATH=$PYTHONPATH:/home/user/merlin/bin/strats/

请注意,如果您正在使用可以启动新终端而无需登录的系统(例如:在Linux桌面上启动新的xterm),或者在需要特定环境变量运行cron脚本的情况下,.bash_profile将不会被执行,因此该环境变量将不可用于该脚本。
正如在这个回答的评论中所讨论的那样,您可以选择使用./~profile文件代替~/.bash_profile,以增加与其他shell的兼容性。
一些人只是在~/.bashrc中添加所有环境配置。由于您的.bash_profile模板调用~/.bashrc,因此您最终会在交互式登录和非登录shell中都有这些环境变量。
对于通过cron运行的脚本,您应该直接在脚本本身或cron行中引用环境配置文件,因为这不会自动完成(crontab启动非交互式shell来运行脚本,并且这些不受~/.bashrc~/.bash_profile~/.profile的影响)。

最好使用/.profile而不是/.bash_profile(而不是在~/.bashrc中设置),例如,在Ubuntu 18上,这样环境变量只会在登录时设置一次,而不是每次打开shell时都设置。 - Rorschach
@jenesaisquoi 当 bash 运行时,会在与 .profile 相同的情况下载入 .bash_profile。如果 .bash_profile 存在,则 bash 会使用它来代替 .profile - chepner
@chepner .profile 在登录 Ubuntu 18 时被调用,但是 .bash_profile 并没有。 - Rorschach
关于 .bash_profile 被引用而不是 .profile,这就是我说最好只有 .profile 的原因,因为它更标准,可能适用于大多数窗口管理器。 - Rorschach
是的,我不太使用Ubuntu,但对于其他人来说,了解这个注意事项还是很有好处的 :) - Alexandre Juma
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接