背景: 我正在尝试将一个目录添加到我的路径中,以便它始终位于我的Linux路径中。我已经尝试过:
export PATH=$PATH:/path/to/dir
这样做是有效的,但每次退出终端并启动新的终端实例时,此路径都会丢失,并且我需要再次运行导出命令。
如何使其永久设置?
~/.profile
或~/.bashrc
文件中。 export PATH="$PATH:/path/to/dir"
根据你所做的事情,你可能还希望创建二进制文件的符号链接:
cd /usr/bin
sudo ln -s /path/to/binary binary-name
请注意,这不会自动更新您的路径,直到本次会话结束。 要实现此目的,您应该运行:
source ~/.profile
or
source ~/.bashrc
$PATH
和/usr/bin
之间不应该有一个冒号吗?
2)/usr/bin
应该在那里吗?
3)你是否应该使用/usr/local/bin
? - Batandwacd
到您解压它的目录中,然后运行ls
---然后意识到tarball中有一个恶意程序叫做ls
。 - Lily Chung有多种方法可以实现。实际的解决方案取决于目的。
变量值通常存储在分配列表或在系统或用户会话启动时运行的shell脚本中。如果使用shell脚本,则必须使用特定的shell语法和export
或set
命令。
/etc/environment
独立的赋值列表,允许使用引用。非常适合将系统范围的目录(如 /usr/local/something/bin
)添加到 PATH
变量或定义 JAVA_HOME
。被 PAM 和 systemd 使用。
/etc/environment.d/*.conf
独立的赋值列表,允许使用引用。非常适合将系统范围的目录(如 /usr/local/something/bin
)添加到 PATH
变量或定义 JAVA_HOME
。配置可以分成多个文件,通常每个工具一个文件(Java、Go 和 Node.js)。被 systemd 使用,它设计为不将这些值传递给用户登录 shell。
/etc/xprofile
X Window 系统会话启动时执行的 shell 脚本。对于登录 X Window 系统的每个用户都要运行它。这是适用于所有用户的 PATH
条目的不错选择,例如 /usr/local/something/bin
。该文件由其他脚本包含,因此请使用 POSIX shell 语法而不是用户 shell 的语法。
/etc/profile
和 /etc/profile.d/*
shell 脚本。适用于仅包含 shell 的系统。这些文件只在登录模式下被 shell 读取。
/etc/<shell>.<shell>rc
shell 脚本。这是一个糟糕的选择,因为它只适用于单个 shell。在非登录模式下使用。
~/.pam_environment
。唯一赋值的列表,不允许引用其他变量,包括HOME
或PATH
等,因此使用受限。在每个用户会话开始时由PAM加载,无论它是X Window System会话还是shell。被PAM使用。
~/.xprofile
。Shell脚本。当用户登录到X Window System系统时执行。在此定义的变量对每个X应用程序都可见。用于扩展路径值,例如~/bin
或~/go/bin
或定义特定于用户的GOPATH
或NPM_HOME
非常合适。该文件由其他脚本包含,因此请使用POSIX shell语法而不是您的用户shell语法。您通过快捷方式启动的图形文本编辑器或IDE将看到这些值。
~/.profile
、~/.<shell>_profile
、~/.<shell>_login
。Shell脚本。仅对从终端或终端模拟器启动的程序可见。对于仅使用shell的系统来说是一个很好的选择。由登录模式的shell使用。
~/.<shell>rc
。Shell脚本。这是一个不好的选择,因为它是单个shell特定的。由非登录模式的shell使用。
GNOME 在 Wayland 上启动用户登录 shell 以获取环境。它有效地使用登录 shell 配置文件 ~/.profile
、~/.<shell>_profile
和 ~/.<shell>_login
。
.bash_profile
添加到列表中吗? - James Ko/etc/environment
。但是我能否在不注销登录的情况下刷新它?有时我不使用bash或sh,因此source /etc/environment
无法工作。 - banan3'14/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
如果您使用的是Z shell(zsh
),请在/etc/zsh/zshenv
文件的注释后面添加此行:
source /etc/environment
我在Ubuntu 15.10(Wily Werewolf)上遇到了这个小问题,但如果你的 zsh 没有得到正确的 PATH ,可能就是这个原因。
$PATH
也被定义在 /etc/profile
文件中。 - Sparhawk对于Bash,您可以将export
声明放在~/.bashrc
中。例如,我的.bashrc文件包含以下行:
export PATH=/var/lib/gems/1.8/bin:/home/ash/.bin:$PATH
.profile
文件时,程序可以工作,但是在 .bashrc
文件中却没有找到它。 - Ali.bashrc
配置生效,您需要执行 source ~/.bashrc
命令重新加载配置。然后它就会起作用了。 - BigSackPATH
没有被标记为环境变量时,才需要使用export
关键字--但几乎肯定已经被标记为环境变量了。简单地PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
即可达到相同的效果。 - Charles Duffy您可以通过以下两种方式永久设置$PATH
。
为特定用户设置路径:
您可能需要在用户的主目录下的文件.bash_profile
中进行设置。
例如,在我的情况下,我将在Tomcat用户配置文件中设置java
路径*
echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
为所有系统用户设置共同路径,您可能需要像这样设置路径:
echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
/etc/profiles
的文件名,有带有 s
?我的没有 s
。我认为你打错了。 - Chris Johnsonecho "export PATH=$PATH:/path/to/dir" >> /home/<USERNAME>/.bashrc
这个命令适用于WSL和Kali发行版。新的方法是你可以设置任何变量,例如 echo "export PYTHONPATH=/path/to/dir" >> /home/<USERNAME>/.bashrc
用于创建新的变量,而 echo "export PYTHONPATH=$PYTHONPATH:/path/to/dir" >> /home/<USERNAME>/.bashrc
用于更新已有变量。 - Akash Shendage对于本地用户,您可以在CentOS或Red Hat Linux (RHEL)上使用:
echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile
这将把当前目录(或您可以使用另一个目录)添加到PATH中。这样做是永久性的,但它会在下一次用户登录时生效。
如果您不想重新登录,那么可以使用:
source ~/.bash_profile
重新加载#用户特定环境和启动程序
。这个注释位于.bash_profile
文件中。
您也可以永久设置它,编辑以下其中一个文件:
/etc/profile
(适用于所有用户)
~/.bash_profile
(适用于当前用户)
~/.bash_login
(适用于当前用户)
~/.profile
(适用于当前用户)
您还可以使用/etc/environment
设置永久的PATH环境变量,但它不支持变量扩展。
修改“/etc/profile”文件:
vi /etc/profile
按下I键进入编辑模式并将光标移动到文件末尾。其他条目:
export PATH=$PATH:/path/to/dir;
按下Esc键退出编辑模式,按下:wq保存文件。
使配置生效
source /etc/profile
说明:
配置文件适用于所有用户。如果您希望仅对活动用户有效,请更改".bashrc" 文件。
我认为最优雅的方法是:
将以下内容添加到~/.bashrc文件中。
运行此命令:
gedit ~/.bashrc
请将您的路径添加到其中: export PATH=$PATH:/opt/node/bin
source ~/.bashrc
(Ubuntu)
我昨天在搜索添加包含自己脚本的文件夹到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
并将我的脚本放在那里。
bashrc
可以正常工作,无需不断地执行source ~/.profile
以使终端从环境变量中读取。 - Jose Mhlanga