2012-02-22 33 views
4

我想在啓動腳本(rc.local)中作爲非root用戶運行命令。我想要執行的命令實際上是非root用戶的.bash_profile中的別名。我曾嘗試使用如何以其他.bash_profile而不是當前用戶的身份執行命令?

su - myuser -c aliased_cmd 

但這不起作用。如果我只是鍵入

su - myuser 
# wait for login... 
aliased_cmd 

它工作正常,但顯然這不適合在實際的腳本。當然,我可以將我想要使用的別名和函數複製到實際的rc.local文件中,但這看起來有點愚蠢......也許有一個我不知道的選項或使用sudo的方法這個?

+0

你試圖執行alias命令之前執行的「源/path-to-non-root-user-home-dir/.bash_profile」? – hovanessyan 2012-02-22 11:56:51

+0

這是一個好主意,事實上這不起作用或許有點問題?這似乎確實_should_ work:su - myuser -c「source .bash_profile; aliased_cmd」 – Jesse 2012-02-22 13:43:53

+0

您嘗試過'--preserve-environment'或'su -c'echo「$ SHELL」'myuser'嗎?這可能是該命令不在Bash shell中執行。 – l0b0 2012-02-22 13:50:38

回答

2

採購文件後,可包括以下

shopt -s expand_aliases 
+1

只需將此行添加到.bash_profile就行了,謝謝! – Jesse 2012-02-22 23:50:14

0

報價man su

當 - 時,它必須被指定爲最後的SU的選擇。

它沒有指定如果它不是最後一個選項會發生什麼。另外,在簡介中,用戶名爲之後的所有選項均爲

您是否試過su -c aliased_cmd - myusersu -l -c aliased_cmd myuser

+0

這兩種形式都不起作用。 – Jesse 2012-02-22 13:26:12

相關問題