比方說,我要運行一些命令,系統用戶(無殼):傳遞shell變量系統用戶
su -s /bin/bash -c "some_command $TEST" my_system_user
如何迪I $ TEST變量傳遞給用戶?
我已經配置爲所有用戶變量/etc/profile.d/my_vars.sh
export TEST=test_arg
但是,這並不得到加載對於上述方案...
我已經沒有運氣嘗試:
-m (--preserve-environment)
比方說,我要運行一些命令,系統用戶(無殼):傳遞shell變量系統用戶
su -s /bin/bash -c "some_command $TEST" my_system_user
如何迪I $ TEST變量傳遞給用戶?
我已經配置爲所有用戶變量/etc/profile.d/my_vars.sh
export TEST=test_arg
但是,這並不得到加載對於上述方案...
我已經沒有運氣嘗試:
-m (--preserve-environment)
首先,我嘗試創建/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 [email protected] "echo val=$A_VAR"
> val=foo
unset A_VAR
這很奇怪。它似乎爲我工作。我可以這樣做:
$ export TEST="hello"
$ su -s /bin/bash -c "echo $TEST"
password:
hello
......我想我錯過了一些關於這個問題。
看起來很奇怪,bash應該在執行'su'前插入變量。 – perreal
使用'env'命令? 'man env'「env - 在修改後的環境中運行程序」 –
也考慮使用'sudo',它可以讓你直接在命令行中傳遞環境變量:'sudo TEST =「$ TEST」...' – Eevee