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


53

我想添加目录以搜索我的搜索路径。我知道我必须修改PATH环境变量。但是,我希望更改是永久的,以便对于我打开的每个“终端”窗口而言,该更改始终有效。

https://help.ubuntu.com/community/EnvironmentVariables中充满了混乱的信息,可能会产生冲突

我正在使用Ubuntu 10.04。假设我要添加/usr/local/foo到我的PATH。哪个文件(.bashrc.profile.bash_login,等...),我应该修改,应该怎么新线(S)是什么样子?

Answers:


70

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

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时)


如果您将其更新为包括应添加到.profile的请求的导出行,则将其标记为答案。
Joshua Flanagan

这过去仅对控制台登录有效(例如ssh或Ctrl + Alt + Fx可访问的虚拟终端)。这些天我不知道/ etc / gdm / Xsession源〜/ .profile。整齐!
Marius Gedminas 2010年

是的,我没有特别提到/ etc / gdm / Xsession或〜/ .Xprofile,因为有更好的方法可以使图形程序在启动时启动,这确实可以确保已经加载了其余的环境。
拉尔夫(Ralf)2010年

1
为了使此答案更全面,请添加MattH关于采购〜/ .profile的评论,以激活更改而无需注销/启动周期。
马特·威尔基

1
@schwiz:~/.profile不会在每个终端上执行,而是在桌面会话启动时在每个终端上执行。在每个终端上执行的命令是~/.bashrc
MestreLion,2013年

13

我通过修改使其工作 ~/.profile

似乎在我的路径中添加〜/ bin是一个不好的例子,因为〜/ .profile中已经有代码可以自动执行此操作(如果目录存在)。

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

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

但是,要使此方法生效,我需要注销并重新登录(仅关闭Terminal窗口并打开一个新窗口不起作用)。


4
做到这一点export PATH="$PATH:/usr/foo",以防您在中有空格或其他特殊字符$PATH
吉尔(Gilles)“所以,别再邪恶了”,2010年

3
您可以重新加载当前环境,而通过键入退出“〜/ .profile文件”
马特^ h

1
@MattH:不,你不能。如果您~/.profile在给定的终端中进行采购,则
MestreLion 2013年

@MestreLion-你是对的。为了方便当前的终端,我提到了它。忘了补充。
Matt H

如果我在PATH中已经有东西怎么办?是否可以像Windows中的PATHS一样附加到它上面?例如我PATH="$HOME/bin:$HOME/.local/bin:$PATH"已经。
加百利博览会


3

您可以将路径添加到/etc/environment,但是请注意,没有任何外壳扩展可以使用;该变量将被设置为您输入的字符。


在两种方法中(在.profile中添加export命令,在etc / environment中将完整路径名添加到PATH),应该首选哪一种?
罗汉·巴蒂亚

1

.bashrc您可以在$HOME目录中修改文件。

在此文件的最后,添加以下行:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

您还.profile可以在$HOME目录中修改文件,包括以下行:

PATH="$HOME/directory_to_include_in_path/:$PATH"

这对我有用。


2
我看不出这对其他答案有什么帮助,这些答案可以更全面地说明。
赞纳(Janna)2013年

0

如果您有ohmyzsh,请通过终端进入主目录,然后键入

nano .zshrc

在文件末尾输入

导出PATH =“ $ HOME / directory_to_include_in_path /:$ PATH”

最后重启终端。为我工作。希望这会有所帮助。


-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH

这是不正确的,将不起作用。在/etc/environment
Zanna
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.