实施的解决方案

实施的解决方案

Windows 有一个 powershell 命令叫做setx在用户或系统环境中创建或修改环境变量。

Ubuntu 是否有类似的命令,即不是使用nanovi,而是只需一行即可添加或更新系统范围内的环境变量。

实施的解决方案

一行添加/更新

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=valueHKLM\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

虽然可以通过命令行导出环境变量,但是它不会影响已经启动的进程中的有效环境,只会影响当前进程及其子进程中的环境。因此实际操作中,更改环境变量时通常需要重新登录。

相关内容