`systemctl --user show-environment` 中显示的环境变量与 `export` 设置的环境变量有什么区别?

`systemctl --user show-environment` 中显示的环境变量与 `export` 设置的环境变量有什么区别?

命令systemctl --user show-environment可以返回环境变量列表。但我通常使用export命令来设置环境变量并使用echo $....我问这个问题是因为我最近注意到前者的环境变量与后者不同,并且我无法使用export命令更改前者环境变量的值。那么,您能告诉我这两种环境变量有什么区别吗?如何更改前一种类型的环境变量的值?

答案1

使用该命令设置的变量export只能由创建它们的 shell(以及该 shell 的子 shell)访问。

export手册页

shell 应将导出属性赋予与指定名称相对应的变量,这将使它们处于随后执行的命令的环境中。如果变量名称后跟=word,则该变量的值应设置为word。

另一方面,Systemd 保留自己的环境变量块,并且不读取诸如 之类的文件.bashrc,这些环境变量会传递给生成的进程。systemctl手册页 - 环境命令部分

设置 systemd 环境变量有多种方法:Arch wiki - Systemd/用户环境变量

相关内容