让我们说我想以系统用户身份运行一些命令(没有shell):
su -s /bin/bash -c "some_command $TEST" my_system_user
我如何将$ TEST变量传递给用户?
我为/etc/profile.d/my_vars.sh
export TEST=test_arg
但是上述情况并没有加载......
我试过没有运气:
-m (--preserve-environment)
答案 0 :(得分:3)
首先,我尝试创建一个/etc/profile.d/my_vars.sh
这样的文件,然后在文件中放入一个测试变量。我可以看到变量的值,无论我运行命令如何。我还尝试使用以下代码动态设置变量,它适用于我的centos:
unset A_VAR; export A_VAR=foo
su -s /bin/bash -c "echo val=$A_VAR" my_system_user
> val=foo
unset A_VAR
另一种解决方案,如果它对您不起作用,您可以考虑播放ssh
技巧。
unset A_VAR; export A_VAR=foo
ssh -o SendEnv my_system_user@localhost "echo val=$A_VAR"
> val=foo
unset A_VAR
答案 1 :(得分:0)
这很奇怪。它似乎对我有用。我能做到:
$ export TEST="hello"
$ su -s /bin/bash -c "echo $TEST"
password:
hello
......我想我对这个问题遗漏了一些东西。