在Ubuntu中`setx`等价

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

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 

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

 PATH="$HOME/testfolder:$PATH" 

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

如果你想声明它们更持久和通用你可以将它们添加到你的~/.bashrc (仅适用于你)文件或/etc/bash.bashrc (系统范围)中,例如,如果你想让它们只计算你或者为所有用户。 另一种选择是将它添加到你的.profile文件中(仅适用于你自己),从你登录的那一刻开始它就可行。你可以用echo做到这一点,例如,如果你确定这个变量没有设置或者你已经设置好了创建新的(只是一个例子):

 echo "variable=value" >> /path/filename 

但是,如果你想在你的用户目录之外编辑一个文件就是你想要编辑/etc/bash.bashrc的情况,你需要使用sudo ,所以你不能简单地使用’here document’,因为这不起作用,然后使用如下所示的行:

 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 ( set -o posix ; set ) | lesssh -c set 。 所有三个都给出了不同的输出量,使用( set -o posix ; set ) | less ( set -o posix ; set ) | less回馈实际设定的大多数变量。

没有直接等价的setx /m ,但有办法完成setx /m工作。

setx /mvariable=value放在HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 。 非/ m(即每用户) setx只是将variable=value放在HKCU\Environment

你特意要求’系统范围’。 为此,您可以将变量值对添加到/etc/environment/etc/profile.d/ 。 前者由pam评估,而后者由/bin/sh评估。 因此,在/etc/profile.d/ ,您将添加variable=value; export variable variable=value; export variable 。 (bash还允许export variable=value )。 对于/etc/environment您将添加variable=value

每用户等价物是~/.pam_environment~/.profile

另请参阅: https : //help.ubuntu.com/community/EnvironmentVariables

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