永久的PATH变量

如何将这个路径变量/media/De Soft/mongodb/bin永久设置?
大家都说要在你的~/.profile.bashrc或者.zshenv(根据你使用的shell)中添加"export PATH=$PATH:media/De\ Soft/mongodb/bin"。
我不知道~/.profile.bashrc或者.zshenv是什么,它们实际上是做什么的?
如何将export PATH=$PATH:my/path添加到我的.profile/.bashrc/.zshenv文件中?
我使用的是64位Ubuntu 14.04 LTS默认终端。
4个回答

它们是配置文件。一种方法:
- 使用Ctrl+Alt+T打开终端窗口 - 运行命令gedit ~/.profile - 在底部添加以下行:export PATH=$PATH:/media/De\ Soft/mongodb/bin并保存 - 退出并重新登录
编辑:
更安全的方法是使用引号。如果原始的PATH中包含一个或多个带有空格的目录,则必须这样做。所以:
export PATH="$PATH:/media/De Soft/mongodb/bin"

1@GunnarHjalmarsson,我真的需要导出PATH变量吗?也许,在其他脚本中默认已经完成了这个操作?我已经检查了我的/.profile文件,发现了一个PATH变量,但它并没有被显式地导出:PATH=/.local/bin:$JAVA_HOME/bin:$PATH - yuranos
6@yuranos87:不,你是对的;在~/.profile中修改PATH时,导出是多余的,因为PATH已经是一个环境变量。 - Gunnar Hjalmarsson
5你不需要注销并重新登录。使用source ~/.profile即可。 - timbo
1@timbo:这并不会使得该变量对于已经在会话中启动的进程可用(除了当前终端)。 - Gunnar Hjalmarsson
1在字符串中,你不需要像这样使用引号吗 export PATH="$PATH:/media/De\ Soft/mongodb/bin"?这是可选的吗? - Bruno Bentzen
@BrunoBentzen:好问题。我编辑了答案以澄清。 - Gunnar Hjalmarsson

要永久更改PATH,您需要对/etc/environment文件进行修改。在编辑之前,请先备份:
sudo cp /etc/environment /etc/environment.bak
sudo nano /etc/environment

示例输出:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

路径由冒号(:)分隔,因此要添加一个新路径,比如说x/y/z,这将是我们的/etc/environment文件的样子:
PATH="x/y/z:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

嗨,我按照你在这里写的做了,$ echo $PATH 显示:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin,但是:sudo nano /etc/environment 显示了更多内容。像游戏之类的,我编辑了路径文件,在NANO中显示出来,但在终端中使用$echo $PATH时没有显示出来,我还好吗? - NaturalDemon
@NaturalDemon:只要PATH变量正确包含了它,你是没问题的,无论你是怎么做到的。 - Xaqron

在终端窗口中输入以下内容。
export PATH=/media/De\ Soft/mongodb/bin:$PATH 

关闭终端并重新启动计算机。在终端中输入时,路径应包括 /media/De\ Soft/mongodb/bin。
echo $PATH

18只有在当前终端会话中才有效。它需要被放置在~/.profile(或者在常见的GNU/Linux发行版上是~/.bashrc,甚至也可以是~/.bash_profile)中,这样才能在每次加载控制台时运行。 - Alejandro Iván
同意。但在系统重新启动后,它会加载到路径变量中。 - Nivedita Velagaleti
12@NiveditaVelagaleti:不,除非你通过配置文件使其持久化。终端命令不会永久修改PATH - Gunnar Hjalmarsson
1要明确的是,如果我想让变量(PATH)对大多数应用程序可用,那么我不应该将其放在 ~/.bashrc~/.bash_profile 中,对吗?文档说:“像 ~/.bashrc~/.bash_profile~/.bash_login 这样的 shell 配置文件... 可能适用于从 shell 启动的程序的 Bash shell,但是这些文件中设置的变量默认情况下不可用于从桌面会话中启动的图形环境程序。” - Randy Cragun

你也可以直接从终端写入~/.profile文件。
echo 'PATH=$PATH:/media/De\ Soft/mongodb/bin' >> ~/.profile