Answers:
有多种方法可以做到这一点。实际解决方案取决于目的。
变量值通常存储在分配列表或在系统或用户会话开始时运行的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,NodeJS)一个文件。由SystemD使用,在设计上不会将这些值传递给用户登录Shell。/etc/xprofile启动X Window系统会话时执行的Shell脚本。将为每个登录X Window System的用户运行此命令。对于PATH对每个用户都有效的条目,这是一个不错的选择/usr/local/something/bin。该文件包含在其他脚本中,因此请使用POSIX Shell语法而不是用户Shell的语法。/etc/profile和/etc/profile.d/*Shell脚本。对于仅使用shell的系统,这是一个不错的选择。这些文件仅在登录模式下由Shell读取。/etc/<shell>.<shell>rc。Shell脚本。这是一个糟糕的选择,因为它是特定于单个shell的。在非登录模式下使用。~/.pam_environment。唯一作业列表,不允许引用。如果是X Window系统会话或shell,则在每个用户会话开始时由PAM加载。您不能引用其他变量,包括HOME或PATH因此用途有限。由PAM使用。~/.xprofileShell脚本。当用户登录到X Window System系统时,将执行此操作。此处定义的变量对每个X应用程序都是可见的。PATH用诸如~/bin或~/go/bin或定义用户特定GOPATH或的值扩展的完美选择NPM_HOME。该文件包含在其他脚本中,因此请使用POSIX Shell语法而不是用户Shell的语法。通过快捷方式启动的图形文本编辑器或IDE将看到这些值。~/.profile,~/.<shell>_profile,~/.<shell>_loginshell脚本。仅对从终端或终端仿真器启动的程序可见。对于仅使用shell的系统来说,这是一个不错的选择。由Shell在登录模式下使用。~/.<shell>rc。Shell脚本。这是一个糟糕的选择,因为它是特定于单个shell的。由Shell在非登录模式下使用。Wayland上的Gnome启动用户登录Shell来获取环境。它有效地利用登录shell配置~/.profile,~/.<shell>_profile,~/.<shell>_login文件。
/etc/environment。但是我可以不注销并重新登录而刷新它吗?有时我不使用bash或sh,所以source /etc/environment不起作用。
您需要将其添加到您的~/.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吗?
cd将其解压缩到目录中,然后运行ls---然后意识到tarball中有一个恶意程序被调用ls。
在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(又名Z Shell),请在以下注释的后面添加此行/etc/zsh/zshenv:
source /etc/environment
我在Ubuntu 15.10上遇到了这个小问题,但是如果您的zsh没有获得正确的PATH,这可能就是为什么
$PATH也在/etc/profileArch Linux中定义。
将export声明放在中~/.bashrc。我的.bashrc包含以下内容:
export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
.profile'时工作正常,找不到.bashrc
source ~/.bashrc重新加载.bashrc配置。然后它将起作用
export仅当PATH尚未将其标记为环境变量时才需要该关键字-几乎无条件地将其标记为。简直PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH会有相同的效果。
您可以$PATH通过两种方式永久设置。
为特定用户设置路径:您可能需要.bash_profile在用户的主目录中进行输入。
例如,在我的情况下,我将在tomcat用户配置文件中设置java路径
[tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile要为所有系统用户设置通用路径,您可能需要设置以下路径:
[root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile/etc/profiles带有s?我的没有s。我想你有错字。
您可以在Centos或RHEL上为本地用户使用:
echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile
这会将当前目录(或您可以使用其他目录)添加到PATH,这使其成为永久目录,但在下一次用户登录时生效。
如果您不想重新登录,则可以使用:
source ~/.bash_profile
重新加载# User specific environment and startup programs此评论存在于.bash_profile
您还可以永久设置,编辑以下文件之一:
/etc/profile (适用于所有用户)
~/.bash_profile (对于当前用户)
~/.bash_login (对于当前用户)
~/.profile (对于当前用户)
您也可以/etc/environment用来设置永久的PATH环境变量,但它不支持变量扩展。
摘自:http : //www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html
我认为最优雅的方法是:
1.将此添加到〜/ .bashrc文件中运行此命令
gedit〜/ .bashrc
在其中添加您的路径
导出PATH = $ PATH:/ opt / node / bin
2.来源〜/ .bashrc
(Ubuntu)
您可以将该行添加到控制台配置文件(例如.bashrc)或.profile中
/home/(username)
ls -a看它们一样的东西。)
永久添加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
echo 'export PATH=$PATH:/new/path/variable'...而且,export由于该PATH变量很可能已被标记为已导出,因此该关键字很可能无用。
/usr/local使用附加到它~/.bashrc。现在,如果您打算/opt/bin使用/etc/bash.bashrc; 附加到相同的变量;$ PATH将转换为相同的静态字符串,结果$ PATH将被替换而不是附加到... ...这将是系统优先选择一个文件而不是另一个文件的原因
通过行添加到/etc/profile.d文件夹脚本。文件夹中的每个脚本都会在登录时自动执行。[name_of_script].shexport PATH=$PATH:/dir/etc/profile.d/etc/profile
我的回答是go-lang关于on 的设置的。Ubuntu linux/amd64我遇到了同样的麻烦:设置环境变量(GOPATH和GOBIN)的路径,在终端退出时丢失它,并source <file_name>每次都使用它来重建它 。错误是放置路径(GOPATH和GOBIN)在~/.bash_profile文件夹中。浪费了好几个小时后,我发现,解决办法是把GOPATH与GOBIN在~/.bash_rc以这样的方式文件:
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN
这样,go安装工作正常,并且没有路径损失。
编辑1:此问题可能与之相关的原因是,非ubuntu终端(例如您在其中运行go代码的ubuntu终端或gnome-terminal)~./bash_rc的设置是从~/.bash_profile文件中获取的,而登录shell的设置是从文件中获取的,并且~/.profile如果~/.bash_profile文件不可访问,则从文件中删除。
可以使用以下命令直接添加它:
echo 'export PATH=$PATH:/new/directory' >> ~/.zshrc
source ~/.zshrc
bash,因此不是很有帮助。
我认为最优雅的方法是:
1.将此添加到〜。/ bashrc文件中
if [ -d "new-path" ]; then
PATH=$PATH:new-path
fi
2.来源〜/ .bashrc
(Ubuntu)
.bash_profile应该添加到列表中?