将环境变量导出到登录 shell

将环境变量导出到登录 shell

我在 Debian 中使用 bash。

当我将变量导出到我的子 shell 的环境中时,它起作用了:

aUser> EXPORTED=exported
aUser> export EXPORTED
aUser> su myUser
myUser> echo $EXPORTED
# prints 'exported'

但是当我创建登录 shell 时却没有:

aUser> EXPORTED=exported
aUser> export EXPORTED
aUser> su myUser --login
myUser> echo $EXPORTED
# prints ''

如何导出变量或函数以便在登录 shell 中使用它?我需要能够在父脚本中定义它之后立即使用它,因此我不能将其放在文件中.profile

答案1

当您使用 --login 启动 shell 时,您会故意清除所有环境变量并从空白处开始,就像用户直接登录一样。因此您不能直接传输变量。

要做的就是将变量写入文件并让用户的 .profile 获取该文件的源代码。请注意,除非您非常小心地控制该文件的访问权限,否则这会带来很多麻烦。

相关内容