Windows 有一个 powershell 命令叫做setx
在用户或系统环境中创建或修改环境变量。
Ubuntu 是否有类似的命令,即不是使用nano
或vi
,而是只需一行即可添加或更新系统范围内的环境变量。
实施的解决方案
一行添加/更新
grep env_name /etc/environment && sed -i.bak 's/env_name=.*/env_name="env_value"/' /etc/environment || echo 'env_name="env_value"' >> /etc/environment
答案1
您只需在命令行中将其声明为 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
返回实际设置的大多数变量。
答案2
没有直接的等价物setx /m
,但是有方法可以完成它的setx /m
作用。
setx /m
放入variable=value
。HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
非 /m(即每个用户)setx
只需将variable=value
放入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
答案3
虽然可以通过命令行导出环境变量,但是它不会影响已经启动的进程中的有效环境,只会影响当前进程及其子进程中的环境。因此实际操作中,更改环境变量时通常需要重新登录。