我想添加一个目录来搜索我的搜索路径。我知道我必须修改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
给出当前注册的位置。如果您想将另一个自定义位置添加到路径变量,可以尝试多种方法。
PATH="$PATH:/someLocation"
新的 Path 变量仅在您的终端关闭之前有效。其他终端不会受到影响。没有子进程可以使用新变量。导出 PATH="$PATH:/someLocation"
新的 Path 变量一直有效,直到您的终端关闭,并且所有子进程都将获得新的 Path 变量。其他终端不会获得新变量。导出 PATH="$PATH:/someLocation"
将此行添加到.bashrc
主文件夹中的文件中。每次创建新的 bash shell 时都会调用此行。这意味着每次打开新终端时都会导出一个新的 Path 变量。但此变量仅适用于 bash shell。您可以在其他 shell(ksh、sh、ssh 等)中使用旧的 Path 变量。
导出 PATH="$PATH:/someLocation"
将此行添加到.profile
您的主文件夹中的文件中。每次登录时都会调用它。这意味着每次创建会话时都会导出一个新的 Path 变量。它在任何地方都可用。
如果您在主文件夹中找不到.profile
或.bashrc
文件,请尝试创建一个新文件。有时系统不会创建这些文件。
ps:适用于 ubuntu。欢迎任何更正。