在Ubuntu中设置PATH变量在哪里?

Joh*_*ood 5 unix linux bash ubuntu path

这是我在为Linux创建命令行应用程序工具时偶然发现的一个非常有趣的问题.不幸的是,关于SO的答案是如此隐藏在其他问题的无数答案中,我决定在SO上为那些想要以编程方式修改PATH的人提出另一个问题.

Joh*_*ood 21

GrzegorzŻur对另一个问题的回答很好地捕捉到了它.不幸的是,它隐藏在许多其他答案中.

有多种方法可以做到这一点.实际的解决方案取决于目的.

变量值通常存储在分配列表或在系统或用户会话开始时运行的shell脚本中.如果是shell脚本,则必须使用特定的shell语法.

系统范围

  1. /etc/environment唯一任务列表.适合加入的全系统的目录像/usr/local/something/binPATH 变量或定义JAVA_HOME.
  2. /etc/xprofile启动X Window System会话时执行Shell脚本.这是针对登录X Window System的每个用户运行的.对于PATH对每个用户都有效的条目,它是一个不错的选择/usr/local/something/bin.该文件包含在其他脚本中,因此使用POSIX shell语法而不是用户shell的语法.
  3. /etc/profile/etc/profile.d/*Shell脚本.对于仅限shell的系统,这是一个不错的选择.这些文件只能由shell读取.
  4. /etc/<shell>.<shell>rc.Shell脚本.这是一个糟糕的选择,因为它是单壳特定的.

此外,/etc/environment它不是一个脚本文件,而是由赋值表达式组成,每行一个.由于此文件存储了系统范围的区域设置和路径设置,因此它是大多数引用选项.使用/etc/profile不是优选的.它只存在于指向/etc/bash.bashrc和收集条目/etc/profile.d

用户会话

  1. ~/.pam_environment.唯一任务列表.如果它是X Window System会话或shell,则在每个用户会话开始时由PAM加载无关.你不能引用其他变量,包括HOMEPATH因此它限制使用.
  2. ~/.xprofileShell脚本.当用户登录X Window System系统时执行此操作.这里定义的变量对每个X应用程序都是可见的.用于扩展完美的选择PATH与值,例如~/bin~/go/bin或定义用户特定GOPATHNPM_HOME.该文件包含在其他脚本中,因此使用POSIX shell语法而不是用户shell的语法.您通过快捷方式启动的图形文本编辑器或IDE将查看这些值.
  3. ~/.profileShell脚本.它仅对从终端或终端仿真器启动的程序可见.对于仅限shell的系统,它是一个不错的选择.
  4. ~/.<shell>rc.Shell脚本.这是一个糟糕的选择,因为它是单壳特定的.

  • 围绕这一主题有大约一百万个关于SO的问题.我问了这个问题,因为它可以让开发人员快速得到这个完整且信息丰富的答案...... (3认同)
  • 为什么你要从重复的问题中获取答案? (2认同)

小智 9

对于临时更改:

~$ export PATH=$PATH:~/root/scripts
Run Code Online (Sandbox Code Playgroud)

对于永久更改,您可以将此行添加到/etc/environment文件中,如下所示:

PATH=$PATH:~/root/scripts
Run Code Online (Sandbox Code Playgroud)

  • 然后来源 /etc/environment (4认同)