2013-08-17 88 views
0

我想運行我們在Mac OS X Mountain Lion上的Linux上編寫的一些bash腳本。該腳本執行在Mac OSX上使用sudo在shell腳本中運行登錄shell

#!/bin/bash 
sudo su -l <username> << EOF 
echo $HOME 
#execute command that is only on the path of <username> 
EOF 

不,我運行腳本USER1,我在劇本嘗試切換到user2的。我實際上需要它像這樣運行,因爲還有其他部分需要以user1身份運行。

在Linux上,我得到

/home/user2 

在Mac OS XI得到

/Users/user1 

所以它不是實際執行的登錄和依賴於我們被登錄爲用戶2失敗,那麼這樣的任何腳本因爲它沒有引用用戶2的.bash_profile/.bashrc

一直在努力這一段時間,現在好像現在有辦法讓OS X以同樣的方式運行像linux一樣。

回答

1

在輸入到達su shell之前,shell正在解釋heredoc中的$HOME變量。你需要躲避$

bash-3.2$ sudo su -l root <<EOF 
> echo $HOME 
> echo \$HOME 
> EOF 
/Users/kevin 
/var/root 

真正的問題是,爲什麼它在你的Linux系統中運行。

+0

謝謝,這有助於很多,重新Linux的框似乎有人與該用戶搞砸。但我真正的問題是Mac OS X沒有運行.bashrc。 現在我已經處理了$ HOME,不再是我希望的問題。 – aorticDefiance