`setx` 在 Ubuntu 中等价

Aym*_*man 10 command-line bash environment-variables

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

Ubuntu 是否有类似的命令,即不使用nanoor 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
Run Code Online (Sandbox Code Playgroud)

Vid*_*uth 12

您可以简单地通过在命令行中将其声明为新的或重新声明它来完成此操作。例如,如果要添加~/testfolder到路径变量中,只需在当前终端中输入即可(这只是一个示例):

PATH="$HOME/testfolder:$PATH"
Run Code Online (Sandbox Code Playgroud)

这当然只会在您说终端会话打开时更改它。注意$这里的用法,你把它放在声明之外,但如果你想显示它,你需要添加$以扩展它的内容。

如果您想声明它们更持久和更通用,您可以将它们添加到您的~/.bashrc(仅适用于您)文件或/etc/bash.bashrc(系统范围)中,例如,如果您希望它们仅对您或所有用户计数。另一种选择是将它添加到您的.profile文件中(仅适用于您自己),从您登录的那一刻起它就可以使用echo。例如,如果您确定尚未设置此变量或创建新变量,则可以执行此操作(仅举个例子):

echo "variable=value" >> /path/filename
Run Code Online (Sandbox Code Playgroud)

但是,如果您想编辑用户目录之外的文件,当您想编辑/etc/bash.bashrc时需要使用sudo,因此您不能简单地使用“此处文档”,因为这不起作用,而是使用如下所示的行:

echo "variable=value" | sudo tee -a /path/filename
Run Code Online (Sandbox Code Playgroud)

如果变量已经存在,您可以使用以下sed命令更改它(也只是一个示例):

sed -i.bak 's/variable=value/variable=new-value/' /path/filename
Run Code Online (Sandbox Code Playgroud)

这将编辑文件中的变量,但在编辑之前创建它的备份。如果您使用 sed 更改用户目录外的文件,则sudo在大多数情况下您需要使用,因此该行将是:

sudo sed -i.bak 's/variable=value/variable=new-value/' /path/filename
Run Code Online (Sandbox Code Playgroud)

从文件中删除变量也可以完成sed,只需将正则表达式的第二部分留空:

sed -i.bak 's/variable=value//' /path/filename
Run Code Online (Sandbox Code Playgroud)

如果您对设置了哪些环境变量感兴趣,可以使用env命令列出它们,( set -o posix ; set ) | less或者sh -c set. 所有三个都给出了不同数量的输出,( set -o posix ; set ) | less并返回了实际设置的最多变量。


小智 11

没有直接的等价物setx /m,但有一些方法可以完成setx /m它的作用。

setx /m看跌期权variable=valueHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment。非/米(即每个用户)setx简单地放variable=valueHKCU\Environment

您特别要求“系统范围”。为此,您可以将变量-值对添加到/etc/environmentOR 到/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


Gun*_*son 7

您可以在命令行中导出环境变量,但它不会影响已启动进程中的有效环境,只会影响当前进程及其子进程中的有效环境。所以在实践中你经常需要在更改环境变量时重新登录。