![为什么我的路径现在没有更新?](https://linux22.com/image/1210069/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%E8%B7%AF%E5%BE%84%E7%8E%B0%E5%9C%A8%E6%B2%A1%E6%9C%89%E6%9B%B4%E6%96%B0%EF%BC%9F.png)
我最近安装了最新的 Qt SDK,并将其添加到我的 ~/.bash_profile 内的 PATH 中。
我没有看到变化。我可以,source ~/.bash_profile
但是我的路径会长一倍,但我无法简单地打开一个新的 gnome 终端并更新路径。
为什么?
注意:Fedora 11 在默认的 gnome 桌面内运行 GNU bash,版本 4.0.16(1)-release。
.bash_profile路径配置:
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/opt/qtsdk-2009.03/qt/bin/:/usr/local/lib/
答案1
当您从桌面打开终端时,终端会继承其启动时的环境,包括该 PATH。根据 Bash 文档,当您打开终端时,会发生以下情况:
当 Bash 作为交互式登录 shell 或使用 --login 选项作为非交互式 shell 调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,然后从第一个存在且可读的文件中读取并执行命令。启动 shell 时可以使用 --noprofile 选项来禁止此行为。
当登录 shell 退出时,Bash 会从文件 ~/.bash_logout 中读取并执行命令(如果存在)。
和...
当启动非登录 shell 的交互式 shell 时,如果 ~/.bashrc 文件存在,Bash 会从该文件读取并执行命令。可以使用 --norc 选项禁止此操作。--rcfile 文件选项将强制 Bash 从文件而不是 ~/.bashrc 读取并执行命令。
因此,通常你的 ~/.bash_profile 包含以下行
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
在任何特定于登录的初始化之后(或之前)。
因此,为了让您的 .bash_profile 执行,您需要登录到登录 shell,也许通过 ssh 进入本地主机,或者注销您的桌面环境并重新登录。
答案2
尝试将其放入你的~/.bashrc
。
当您登录时,~/.bash_profile
将进行处理。当您打开新终端或启动新 shell 时,将不再进行处理,此时将~/.bashrc
进行处理。您应该~/.bashrc
在您的 中执行 source ~/.bash_profile
。
请参阅中的“调用”部分man bash
。