如何在Linux/Unix上永久设置$PATH

1081
在Linux上,我如何将一个目录添加到$PATH中以使其在不同的会话中保持持久性?
背景: 我正在尝试将一个目录添加到我的路径中,以便它始终位于我的Linux路径中。我已经尝试过:
export PATH=$PATH:/path/to/dir

这样做是有效的,但每次退出终端并启动新的终端实例时,此路径都会丢失,并且我需要再次运行导出命令。

如何使其永久设置?


如果您使用的是Mac,则bashrc可以正常工作,无需不断地执行source ~/.profile以使终端从环境变量中读取。 - Jose Mhlanga
24个回答

3
这是一行代码,会在.bashrc文件中添加一行。该行代码将检查目录是否已经添加到路径中,如果没有,则会将其添加。这将防止每次源.bashrc时都将目录重复添加到路径中。
echo "[[ \":\$PATH:\" != *\":$(pwd)/path/to/add:\"* ]] && export PATH=\"\${PATH:+\${PATH}}:$(pwd)/path/to/add\"" >> ~/.bashrc

source ~/.bashrc

2
如果你在整个字符串外使用单引号,那么你就不必反斜杠转义所有嵌入的双引号。 - tripleee

2
最简单的方法是以下这行代码:
PATH="<directory you want to include>:$PATH"

在你的家目录下的.bashrc文件中。
即使你关闭终端或重新启动电脑,它也不会被重置。它是永久性的。

2
我认为最优雅的方式是:

  1. Add this in the ~./bashrc file:

    if [ -d "new-path" ]; then
      PATH=$PATH:new-path
    fi
    
  2. source *~/.bashrc*

(Ubuntu)

并显示上述路径:printf "%s\n" $PATH - Robot70

0

对于Debian发行版,您需要:

  • 编辑文件~/.bashrc。例如:vim ~/.bashrc
  • 添加export PATH=$PATH:/path/to/dir
  • 然后重新启动计算机。请注意,如果您以root身份编辑文件~/.bashrc,则您添加的环境变量仅适用于root用户。

如果您使用的是Mac电脑,则bashrc可以正常工作,无需不断地执行source ~/.profile以便终端读取环境变量。 - Jose Mhlanga
是的,似乎需要重新启动。但是原因是什么?难道没有其他方法吗? - Peter Mortensen
1
简单的解决方法是注销并重新登录。常见的替代方案是 source .bashrc,但它会重新执行其中的所有内容,因此您可能会得到一些重复的东西等。一些用户会注意使他们的 .bashrc 可重复(检查是否已经完成某些操作,如果可能会产生不良后果,则不再执行),但这使得它更加复杂。当然,如果您知道自己在做什么,只需手动在当前运行的 shell 中进行必要的更改即可。 - tripleee
1
简单的解决方法是退出登录然后重新登录。一个常见的替代解决方案是source .bashrc,但它会重新执行其中的所有内容,所以可能会导致一些内容重复或其他问题。一些用户会注意让他们的.bashrc幂等(检查某些操作是否已经完成,如果已经完成则不再重复执行,以避免可能产生的不良后果),但这会使问题变得更加复杂。当然,如果你知道自己在做什么,可以在当前运行的shell中手动进行必要的更改。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接