如何修改 PATH,以便更改在每个终端会话中都可用

如何修改 PATH,以便更改在每个终端会话中都可用

我想添加一个目录来搜索我的搜索路径。我知道我必须修改PATH环境变量。但是,我希望更改是永久性的,以便它对于我打开的每个终端 (bash) 窗口始终有效。

有太多令人困惑甚至相互矛盾的信息https://help.ubuntu.com/community/EnvironmentVariables

我正在使用 Ubuntu 10.04。假设我想添加/usr/local/foo到我的PATH。我应该修改哪个文件(、、.bashrc等...)以及新行应该是什么样的?.profile.bash_login

答案1

以下命令将路径添加到当前路径:

export PATH=$PATH:/my/custom/path

如果您希望您的设置每次都执行此命令,那么您可以在多个地方放置它。当您登录时,将按以下顺序执行以下脚本:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

笔记

  • ~/.profile~/.bash_profile仅当和不存在 时才会加载~/.bash_login。否则,至少 bash 会加载它们。建议使用.profile和而不是 bash 特定的脚本。因此,如果在这些尝试中你创建了.bash_login请立即删除。

  • ~/.bashrc仅当您正在运行交互式会话时才会加载。(带有提示符,您可以在其中实际输入一些内容)。

  • ~/.bashrc一次又一次地被加载,每次打开一个新终端时。因此,gnome-terminal 中会有一个新的选项卡、一个新的虚拟终端等。因此,即使您不再次登录,.bashrc每次打开新 shell 时也会加载(从而重置其环境)。

  • 像 byobu 这样的东西应该真正融入其中.profile,(否则它将无法发挥作用 ;-)

  • .profile如果您希望路径之类的内容在交互式会话之外工作,则应该将其输入其中。(例如,当您在 GNOME 中按下Alt+时)F2

答案2

我通过修改让它工作~/.profile

看起来将 ~/bin 添加到我的路径中是一个不好的例子,因为如果目录存在,~/.profile 中已经有代码可以自动执行此操作。

为了将 usr/local/foo 目录添加到我以后每个会话的路径中,我在 .profile 的末尾添加/编辑以下行:

export PATH=$PATH:/usr/local/foo

但是,为了使其生效,我需要注销并重新登录(简单地关闭终端窗口并打开一个新窗口是行不通的)。

答案3

要重新加载 .profile 并在不注销/登录的情况下使更改生效,请运行:

source ~/.profile

答案4

在设置 PATH 变量之前,您需要了解为什么要设置 PATH 变量。当您在终端中发出某些命令时,系统会尝试搜索 Path 变量。

例如:whereis ls命令显示ls里面有/bin。仅当在路径变量中注册时,该ls命令才有效。/bin

echo $PATH给出当前注册的位置。如果您想将另一个自定义位置添加到路径变量,可以尝试多种方法。

  1. PATH="$PATH:/someLocation"
    新的 Path 变量仅在您的终端关闭之前有效。其他终端不会受到影响。没有子进程可以使用新变量。
  2. 导出 PATH="$PATH:/someLocation"
    新的 Path 变量一直有效,直到您的终端关闭,并且所有子进程都将获得新的 Path 变量。其他终端不会获得新变量。
  3. 导出 PATH="$PATH:/someLocation"

将此行添加到.bashrc主文件夹中的文件中。每次创建新的 bash shell 时都会调用此行。这意味着每次打开新终端时都会导出一个新的 Path 变量。但此变量仅适用于 bash shell。您可以在其他 shell(ksh、sh、ssh 等)中使用旧的 Path 变量。

  1. 导出 PATH="$PATH:/someLocation"

将此行添加到.profile您的主文件夹中的文件中。每次登录时都会调用它。这意味着每次创建会话时都会导出一个新的 Path 变量。它在任何地方都可用。

如果您在主文件夹中找不到.profile.bashrc文件,请尝试创建一个新文件。有时系统不会创建这些文件。

ps:适用于 ubuntu。欢迎任何更正。

相关内容