Answers:
您只需在命令行中将其声明为new或重新声明它即可。例如,如果要添加~/testfolder
到路径变量,只需在当前终端中输入它(这只是一个示例):
PATH="$HOME/testfolder:$PATH"
当然,这只会在您说终端会话打开的时间内更改它。注意$
这里的用法,将其保留以进行声明,但是如果要显示它,则需要添加$
以扩展其内容。
如果要声明它们的持久性和通用性,可以将它们添加到您的~/.bashrc
文件中/etc/bash.bashrc
(仅供您使用)或添加到(系统范围内),例如,如果您希望它们仅对您自己或对所有用户计数。另一种选择是将其添加到您的.profile
文件中(仅供您自己使用),从您登录后就可以使用该文件echo
。例如,如果您确定此变量尚未设置或创建新变量,则可以执行此操作(仅作为示例):
echo "variable=value" >> /path/filename
但是,如果要在用户目录外编辑文件(在这种情况下需要编辑)/etc/bash.bashrc
,则需要使用它sudo
,因此您不能简单地使用“此处文档”,因为这不起作用,而是使用下面的行:
echo "variable=value" | sudo tee -a /path/filename
如果变量已经存在,则可以使用sed
命令进行更改(也仅是示例):
sed -i.bak 's/variable=value/variable=new-value/' /path/filename
这将编辑文件中的变量,但在编辑之前创建它的备份。如果您使用sed更改用户目录外的文件,则sudo
在大多数情况下都需要使用,因此该行应为:
sudo sed -i.bak 's/variable=value/variable=new-value/' /path/filename
也可以从文件中删除变量sed
,只需将正则表达式的第二部分留空即可:
sed -i.bak 's/variable=value//' /path/filename
如果您对设置了哪些环境变量感兴趣,可以使用env
命令列出它们,( set -o posix ; set ) | less
或者sh -c set
。所有这三个都提供各种输出量,( set -o posix ; set ) | less
并返回实际设置的最多变量。
sh -c set
并未真正显示系统上设置的所有环境变量。但是,我将把它作为显示其中一些内容的第三种方法。
sh -c set
显示所有环境变量。它只是不显示 调用外壳程序的外壳程序变量,但是除非您使用export
它们,否则从该外壳程序运行的进程绝不会继承这些变量。
/etc/environment
?似乎这是混淆的捷径。
没有与的直接等效setx /m
,但是有一些方法可以完成此setx /m
操作。
setx /m
看跌期权variable=value
在HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
。非/ m(即每个用户)setx
只需将variable=value
in放入HKCU\Environment
。
您专门要求“系统范围”。为此,您可以将变量值对添加到或/etc/environment
或上/etc/profile.d/<yourfile>
。前者由pam评估,而后者由评估/bin/sh
。因此,在中/etc/profile.d/<yourfile>
,您将添加variable=value; export variable
。(bash也允许export variable=value
)。为/etc/environment
您添加variable=value
。
每个用户的等效项是~/.pam_environment
和~/.profile
。
另请参阅:https : //help.ubuntu.com/community/EnvironmentVariables
您可以在命令行上导出环境变量,但它不会影响已经启动的进程中的有效环境,而只会影响当前进程及其子进程。因此,在实践中,更改环境变量时通常需要重新登录。
( set -o posix ; set )
起来更简单,不如说是sh -c set
。即使sh
是符号链接也可以使用bash
(在现代Ubuntu版本中通常不这样)。