如何在Linux / Unix上永久设置$ PATH?
我试图添加一个目录到我的path,所以它将始终在我的Linuxpath。 我试过了:
export PATH=$PATH:/path/to/dir 这是有效的,但是每次我退出terminal并启动一个新的terminal实例,这个path都会丢失,我需要再次运行export命令。
我该怎么做,这将永久设置?
  你需要把它添加到你的~/.profile文件中。 
 export PATH=$PATH:/path/to/dir 
根据你在做什么,你也可能希望符号链接到二进制文件:
 cd /usr/bin sudo ln -s /path/to/binary binary-name 
请注意,这不会自动更新会话剩余部分的path。 要做到这一点,你应该运行:
 source ~/.profile 
 我不能相信没有人提到/etc/environment文件。 唯一的目的是存储环境variables。 原来$ PATHvariables是在这里定义的。 这是来自我的/etc/environment文件的一个粘贴: 
 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" 
所以你可以打开这个文件作为根,并添加任何你想要的。
要获得即时结果,请运行(以普通用户身份和根用户身份运行)
 source /etc/environment && export PATH 
更新:
 如果您使用zsh (又名Z Shell),请在/etc/zsh/zshenv的注释之后添加此行: 
 source /etc/environment 
我在Ubuntu 15.10上遇到了这个小怪癖,但是如果你的zsh没有得到正确的PATH ,这可能是为什么
有多种方法可以做到这一点。 实际的解决scheme取决于目的。
variables值通常存储在分配列表或在系统或用户会话开始时运行的shell脚本中。 如果是shell脚本,则必须使用特定的shell语法。
系统广泛
-   /etc/environment唯一赋值的列表。 非常适合将/usr/local/something/bin等系统级目录添加到PATHvariables或定义JAVA_HOME。
-   /etc/xprofile启动X Window系统会话时执行的Shell脚本。 这是为每个login到X Window System的用户运行的。 对于每个用户(如/usr/local/something/bin有效的PATH条目来说,这是一个不错的select。 该文件包含在其他脚本中,因此使用POSIX shell语法而不是用户shell的语法。
-   /etc/profile和/etc/profile.d/*Shell脚本。 这对于仅有壳的系统来说是一个不错的select。 这些文件只能被shell读取。
-   /etc/<shell>.<shell>rc。 Shell脚本。 这是一个糟糕的select,因为它是单个特定的shell。
用户会话
-   ~/.pam_environment。 独特的作业列表。 在每个用户会话开始时由PAM加载,如果是X Window系统会话或shell,则无关紧要。 您不能引用其他variables,包括HOME或PATH因此它的使用受到限制。
-   ~/.xprofileShell脚本。 这是在用户login到X Window System系统时执行的。 这里定义的variables对每个X应用程序都是可见的。 使用~/bin或~/go/binGOPATH来扩展PATH或定义用户特定的GOPATH或NPM_HOME完美select。 该文件包含在其他脚本中,因此使用POSIX shell语法而不是用户shell的语法。 您的graphics文本编辑器或由快捷方式启动的IDE将看到这些值。
-   ~/.profileShell脚本。 只有从terminal或terminal模拟器启动的程序才可见。 这对于纯壳系统来说是一个不错的select。
-   ~/.<shell>rc。 Shell脚本。 这是一个糟糕的select,因为它是单个特定的shell。
分发特定的文档
- Ubuntu的
- ArchLinux的
 把export声明放在~/.bashrc 。 我的.bashrc包含这个: 
 export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH 
 您可以通过两种方式永久设置$PATH 。 
- 
为特定用户设置path:您可能需要在用户的主目录中的 .bash_profile中创build条目。例如在我的情况下,我将在tomcat用户configuration文件中设置javapath [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
- 
要为所有系统用户设置通用path,您可能需要设置如下path: [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
您可以在Centos或RHEL上使用本地用户:
 echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile 
这会将当前目录(或者可以使用其他目录)添加到PATH中,这会使其永久生效,但会在下次用户login时生效。
如果你不想重新login,那么可以使用:
 source ~/.bash_profile 
 重新加载# User specific environment and startup programs这个评论是在.bash_profile目前 
您可以将该行添加到控制台configuration文件(例如.bashrc)或.profile中
如果您处于login模式或非login模式,则添加导出命令的文件将取决于您。
如果您处于login模式,则您要查找的文件是/ etc / bash或/etc/bash.bashrc
如果您处于非login模式,则正在查找文件/.profile或目录/.profiles.d中的文件
上面提到的文件系统variables在哪里。
 添加到/etc/profile.d文件夹脚本[name_of_script].sh与行: export PATH=$PATH:/dir 。  /etc/profile.d文件夹中的每个脚本在login时都是由/etc/profile自动执行的。 
Zues77有正确的想法。 OP没有说“我怎么能通过这个办法破解”。 OP想知道如何永久追加到$ PATH:
 sudo nano /etc/profile 
这是它为所有东西设置的地方,并且是为所有需要$ PATH的东西改变它的最好的地方
您也可以永久设置,编辑这些文件之一:
  /etc/profile (对于所有用户) 
  ~/.bash_profile (针对实际用户) 
  ~/.bash_login (对于实际用户) 
  ~/.profile (对于实际用户) 
 您也可以使用/etc/environment设置一个永久的PATH环境variables,但不支持variables扩展 。 
摘自: http : //www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html
 我昨天偶然发现了这个问题,当寻找一种方法来添加一个包含我自己的脚本的文件夹到PATH  – 惊奇地发现我的~/.profile文件(在Linux Mint 18.1上)已经包含了这个: 
 # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi 
 因此,我所要做的只是创build文件夹~/bin并把我的脚本放在那里。 
 我的回答是在Ubuntu linux/amd64上设置go-lang 。我面临着设置环境variables( GOPATH和GOBIN )的path,在terminal退出时丢失它并使用source <file_name>重build它的麻烦每次source <file_name> 。错误是把path( GOPATH和GOBIN )放在~/.bash_profile文件夹中。 浪费了好几个小时后,我发现解决的方法是把GOPATH和GOBIN放在~/.bash_rc文件中,方法如下: 
 export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOPATH:$GOBIN 
这样做,安装工作正常,没有path损失。
 编辑1:这个问题可以相关的原因是,像你的ubuntuterminal或我们运行代码的gnome-terminal这样的非loginshell的设置取自~./bash_rc文件,loginshell的设置被采用从~/.bash_profile文件和~/.profile文件中,如果~/.bash_profile文件不可访问。 
 最简单的方法是以下行: 
 PATH="<directory you want to include>:$PATH" 
 在主目录中的.bashrc文件中。 
 即使closuresterminal或重新启动电脑,也不会重置。 它的永久性 
我认为最优雅的方式是:
1.在〜。/ bashrc文件中添加此项运行此命令
gedit〜。/ bashrc
在里面添加你的path
export PATH = $ PATH:/ opt / node / bin
2.source〜/ .bashrc
(Ubuntu的)
永久添加PATHvariables
全球:
 echo "export PATH=$PATH:/new/path/variable" >> /etc/profile 
本地(仅限用户):
 echo "export PATH=$PATH:/new/path/variable" >> ~/.profile 
用于全局重启。 为了本地login。
例
之前:
 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin 
后:
 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable 
或者,您可以编辑configuration文件:
 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable 
另一种方式(谢谢gniourf_gniourf):
 echo 'PATH=$PATH:/new/path/variable' >> /etc/profile 
你不应该在这里使用双引号! echo'export PATH = $ PATH:/ new / path / variable'…顺便说一下,export关键字很可能是无用的,因为PATHvariables很可能已经标记为导出。 – gniourf_gniourf
一个方法来添加永久path,这对我来说是:cd /etc/profile.d touch custom.sh vi custom.sh export PATH = $ PATH:/ path根据您的设置/重新启动您的计算机,在这里,我们走的path会永久欢呼
我认为最优雅的方式是:
1.join〜/ .bashrc文件
 if [ -d "new-path" ]; then PATH=$PATH:new-path fi 
2.source〜 / .bashrc
(Ubuntu的)
我刚刚遇到同样的问题,并粘贴PATH得到重新login时总是重置的原因。经过大量的search工作,我终于意识到这是一个自定义的系统问题,当我看到这个代码在我的/ etc / passwd文件:
 root:x:0:0:root:/root:/usr/sbin/nologin 
 这意味着这个自定义系统禁用root的bash shell。 
 如果你已经尝试了所有的解决scheme,但没有获得任何有用的信息。而且你使用一个自定义的系统,你可以看看我可能的原因。 
它可以通过使用以下命令直接添加:
echo'export PATH = $ PATH:/ new / directory'>>〜/ .zshrc source〜/ .zshrc