将shell变量传递给系统用户

时间:2014-06-06 01:48:44

标签: linux bash shell

让我们说我想以系统用户身份运行一些命令(没有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)

2 个答案:

答案 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

......我想我对这个问题遗漏了一些东西。