2013-04-17 90 views
0

我試圖寫一個腳本,除其他事項外,安裝RVM之間切換。爲了做到這一點,腳本是以root身份運行(須藤setup.sh),其中setup.sh調用安裝RVM標。但是,爲了安裝rvm我需要成爲用戶,所以我想從根目錄切換爲用戶。我這樣做是這樣的:bash腳本,目錄和用戶

在setup.sh:如果我做which source

sudo: source: command not found 

我什麼也沒得到爲:

# Do some stuff as root 

# Install rvm 
sudo -u $SUDO_USER source path/to/rvm_install/script 
sudo -u install_rvm 

然而,當我這樣做,我得到的bash從這個錯誤無論是root還是$ SUDO_USER。但是,例如,我可以源代碼.bash_profile,沒有錯誤。而且,我可以提供源代碼,並且有一本手冊,因此我知道該源代碼已安裝。

如何切換到$ SUDO_USER,仍然可以得到的bash承認我的下標?

回答

0

type source會告訴你,source是一個shell內置的,而不是外部命令。 shell內建只能在外殼內使用,而不是通過像sudo外部工具。

如果要執行你的下標,扔掉設置任何環境變量,你可以做

sudo -u $SUDO_USER bash path/to/rvm_install/script 

如果install_rvm命令需要在路徑定義的變量或函數/到/ rvm_install /腳本,可以使用

sudo -u $SUDO_USER bash -c 'source path/to/rvm_install/script; install_rvm' 
+0

的作品就像一個魅力!感謝您的幫助解釋和sudo命令。 – Sly