命令systemctl --user show-environment
可以返回环境变量列表。但我通常使用export
命令来设置环境变量并使用echo $...
.我问这个问题是因为我最近注意到前者的环境变量与后者不同,并且我无法使用export
命令更改前者环境变量的值。那么,您能告诉我这两种环境变量有什么区别吗?如何更改前一种类型的环境变量的值?
答案1
使用该命令设置的变量export
只能由创建它们的 shell(以及该 shell 的子 shell)访问。
shell 应将导出属性赋予与指定名称相对应的变量,这将使它们处于随后执行的命令的环境中。如果变量名称后跟=word,则该变量的值应设置为word。
另一方面,Systemd 保留自己的环境变量块,并且不读取诸如 之类的文件.bashrc
,这些环境变量会传递给生成的进程。systemctl
手册页 - 环境命令部分。
设置 systemd 环境变量有多种方法:Arch wiki - Systemd/用户环境变量。