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使用。~/.xprofile
Shell脚本。当用户登录到X Window System系统时,将执行此操作。此处定义的变量对每个X应用程序都是可见的。PATH
用诸如~/bin
或~/go/bin
或定义用户特定GOPATH
或的值扩展的完美选择NPM_HOME
。该文件包含在其他脚本中,因此请使用POSIX Shell语法而不是用户Shell的语法。通过快捷方式启动的图形文本编辑器或IDE将看到这些值。~/.profile
,~/.<shell>_profile
,~/.<shell>_login
shell脚本。仅对从终端或终端仿真器启动的程序可见。对于仅使用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/profile
Arch 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].sh
export 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
应该添加到列表中?