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

时间:2013-02-01 00:57:09

标签: linux bash unix path zsh

我正在尝试将路径添加到路径中,因此它始终位于我的Linux路径中。我试过了:

export PATH=$PATH:/path/to/dir

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

我该怎么做才能永久设置?

25 个答案:

答案 0 :(得分:924)

您需要将其添加到~/.profile~/.bashrc文件中。

export PATH="$PATH:/path/to/dir"

根据您正在做的事情,您可能还想要符号链接到二进制文件:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

请注意,这不会自动更新会话剩余时间的路径。要执行此操作,您应该运行:

source ~/.profile 
or
source ~/.bashrc

答案 1 :(得分:227)

在Ubuntu中,修改/etc/environment。其唯一目的是存储环境变量。最初$ PATH变量在这里定义。 这是我/etc/environment文件中的粘贴:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

因此,您只需以root身份打开此文件并添加所需内容即可。

对于即时结果, 运行(尝试普通用户 root):

source /etc/environment && export PATH

<强>更新

如果您使用zsh(a.k.a Z Shell),请在/etc/zsh/zshenv中的评论后立即添加此行:

source /etc/environment

我在Ubuntu 15.10上遇到了这个小小的怪癖,但是如果你的 zsh 没有得到正确的 PATH ,这可能就是为什么

答案 2 :(得分:143)

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

变量值通常存储在分配列表或在系统或用户会话开始时运行的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脚本。这是一个糟糕的选择,因为它是单壳特定的。
  5. 用户会话

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

答案 3 :(得分:67)

export声明放在~/.bashrc中。我的.bashrc包含这个:

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH

答案 4 :(得分:29)

您可以通过两种方式永久设置$PATH

  1. 为特定用户设置路径: 您可能需要在用户的主目录中的.bash_profile中进行输入。

    例如在我的情况下,我将在tomcat用户配置文件中设置java路径

    [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
    
  2. 要为所有系统用户设置公共路径,您可能需要设置如下路径:

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
    

答案 5 :(得分:12)

您可以在Centos或RHEL上使用本地用户:

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

这会将当前目录(或者您可以使用其他目录)添加到PATH,这会使其成为永久性目录,但会在下次用户登录时生效。

如果您不想重新登录,可以使用:

source ~/.bash_profile

重新加载# User specific environment and startup programs此评论出现在.bash_profile

答案 6 :(得分:9)

您也可以永久设置,编辑其中一个文件:

/etc/profile(适用于所有用户)

~/.bash_profile(对于当前用户)

~/.bash_login(对于当前用户)

~/.profile(对于当前用户)

您也可以使用/etc/environment设置永久PATH环境变量,但它不支持变量扩展

摘自:http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html

答案 7 :(得分:6)

我认为最优雅的方式是:

1.在〜/ .bashrc文件中添加此内容    运行此命令

  

gedit~ / .bashrc

在其中添加您的路径

  

export PATH = $ PATH:/ opt / node / bin

2.source~ / .bashrc

(Ubuntu的)

答案 8 :(得分:6)

昨天我在寻找一种方法将一个包含我自己的脚本的文件夹添加到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

因此,我所要做的就是创建文件夹~/bin并将我的脚本放在那里。

答案 9 :(得分:6)

您可以将该行添加到控制台配置文件(例如.bashrc)或.profile

答案 10 :(得分:3)

添加导出命令的文件取决于您是处于登录模式还是非登录模式。

如果您处于登录模式,您要查找的文件是/ etc / bash或/etc/bash.bashrc

如果您处于非登录模式,则需要查找文件/.profile或目录/.profiles.d中的文件

上面提到的文件,如果系统变量在哪里。

答案 11 :(得分:3)

我的回答是关于go-lang Ubuntu linux/amd64的设置。我遇到了设置环境变量路径的同样问题(GOPATH和{{1} }),在终端退出时丢失它并每次使用GOBIN重建它。错误是将路径(source <file_name>GOPATH)放在GOBIN文件夹中。在浪费了几个小时之后,我发现解决方案是将~/.bash_profileGOPATH置于GOBIN文件中:

~/.bash_rc

这样做,go安装工作正常,没有路径损失。

编辑1: 与此问题相关的原因是,非登录shell(如ubuntu终端或运行go代码的gnome-terminal)的设置取自export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOPATH:$GOBIN 文件,登录shell的设置取自{ {1}}文件,如果~./bash_rc文件无法访问,则来自~/.bash_profile文件。

答案 12 :(得分:3)

Zues77有正确的想法。 OP没有说&#34;我怎么能通过这个&#34;来破解我的方式。 OP想知道如何永久追加$ PATH:

sudo nano /etc/profile

这是为所有内容设置的地方,也是为需要$ PATH的所有内容更改它的最佳位置

答案 13 :(得分:3)

永久添加PATH变量

全局:

echo "export PATH=$PATH:/new/path/variable" >> /etc/profile

本地(仅限用户):

echo "export PATH=$PATH:/new/path/variable" >> ~/.profile

全局重启。对于本地重新登录。

示例

<强>之前:

$ 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

您也可以只修改个人资料:

$ 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关键字   很可能没用,因为PATH变量很可能已经存在   标记为已导出。 - gniourf_gniourf

答案 14 :(得分:2)

使用第/etc/profile.d行添加到[name_of_script].sh文件夹脚本export PATH=$PATH:/dir/etc/profile.d文件夹中的每个脚本都会在登录时由/etc/profile自动执行。

答案 15 :(得分:2)

1。修改“ / etc / profile”文件。

#vi /etc/profile

按“ i”键进入编辑状态并将光标移至文件末尾,其他条目:

export PATH=$PATH:/path/to/dir;

按“ Esc”键退出编辑状态,':wq'保存文件。

2。使配置生效

source /etc/profile

说明:  配置文件适用于所有用户,如果您只想对活动用户有效,请设置“ .bashrc”文件

答案 16 :(得分:2)

经过大量研究,在以下elementary OS的启发下,我找到了一个简单的解决方案(我正在使用link)。

  

运行以下命令以编辑模式打开.bashrc文件。 [您   也可以使用vi或其他任何编辑器]。

~$ sudo nano ~/.bashrc
     

在文件末尾添加以下行并保存。

export PATH="[FLUTTER_SDK_PATH]/flutter/bin:$PATH"
     

例如:

export PATH="/home/rageshl/dev/flutter/bin:$PATH"
     

enter image description here

我相信这是永久解决方案,用于在Ubuntu发行版中设置抖动的路径

希望这会有所帮助。

答案 17 :(得分:1)

我认为最优雅的方式是:

1.在〜。/ bashrc 文件

中添加此内容
if [ -d "new-path" ]; then
  PATH=$PATH:new-path
fi

2.source 〜/ .bashrc

(Ubuntu的)

答案 18 :(得分:1)

最简单的方法是以下几行:
PATH="<directory you want to include>:$PATH"
在主目录的.bashrc文件中。
即使关闭终端或重启PC也不会重置。它的永久性

答案 19 :(得分:0)

添加永久路径的一种方法,对我有用,是:     cd /etc/profile.d     触摸custom.sh     vi custom.sh     export PATH = $ PATH:/ path根据你的设置/ 重新启动计算机,我们在这里永久地路径 欢呼声。

答案 20 :(得分:0)

对于debian发行,您必须:

    - edit ~/.bashrc  e.g: vim ~/.bashrc 
    - add export PATH=$PATH:/path/to/dir
    - then restart your computer. Be aware that if you edit ~/.bashrc  as root, your environment variable you added will work only for root

答案 21 :(得分:0)

使用Homebrew

进行快速安装

选中此video

下面的步骤

Step 1:

打开https://brew.sh/

enter image description here

复制 上方屏幕截图

中显示的 URL

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

粘贴终端中复制了 URL ,然后按回车/输入键

一旦完成并完成自制软件,请按照步骤2:

Step 2: https://www.terraform.io/downloads.html

下载Terraform

提取下载的 zip terraform文件

现在您将在下载的文件夹中拥有一个文件名terraform

例如

/Users/username/downloads/terraform

Step 3:

打开一个terminal

cd:将目录更改为/Users/username/downloads/terraform

Step 4:

运行 brew install terraform终端

答案 22 :(得分:0)

假设您正在运行MacOS,并且拥有一个值得信任的二进制文件,并且希望在整个系统中使用该二进制文件,但不一定要将该二进制文件添加到PATH的目录,则可以选择将二进制文件复制/移动到'how (Middle English (1100-1500))'中,该文件应该已经在您的PATH中。这将使二进制可执行文件像您可能已经在终端中访问的任何其他二进制文件一样。

答案 23 :(得分:0)

这是单线。它将一行添加到.bashrc。 Tha行将检查目录是否已添加到路径,如果没有,则追加。这样可以防止每次您获取.bashrc时都在路径中复制目录。

echo "[[ \":\$PATH:\" != *\":$(pwd)/path/to/add:\"* ]] && export PATH=\"\${PATH:+\${PATH}}:$(pwd)/path/to/add\"" >> ~/.bashrc

source ~/.bashrc

答案 24 :(得分:-2)

可以使用以下命令直接添加:

echo'export PATH = $ PATH:/ new / directory'&gt;&gt; 〜/ .zshrc 来源〜/ .zshrc