2016-08-16 83 views
1

我已經將一個簡單的bash腳本放在一起,看看是否安裝了rbenv。我安裝rbenv整個系統而不是針對單個用戶的using this guide並確認它的安裝爲用戶:使用sudo檢查安裝的軟件

[email protected]:~$ rbenv version 
2.1.4 (set by /usr/local/rbenv/version) 

[email protected]:~$ sudo -i 
[email protected]:~$ rbenv version 
2.1.4 (set by /usr/local/rbenv/version) 

我要檢查是否安裝了root用戶,因爲我在腳本中做系統管理員的工作:

#!/bin/bash 

exec 5> debug_output.txt 
BASH_XTRACEFD="5" 

[ $UID != 0 ] && exec sudo $0 "[email protected]" 

if [[ ! `rbenv version | grep "2.1.4"` ]]; then 
    echo "rbenv not installed ... do something" 
else 
    echo "rbenv installed" 
fi 

然而,當我運行該腳本的普通用戶上下文(使用sudo):

[email protected]:~$ sudo ./test.sh 
./test.sh: line 5: rbenv: command not found 
rbenv not installed ... do something 

爲什麼我的腳本不拾取背景FO r根用戶並檢測到rbenv實際安裝?

更新:加調試輸出

+ '[' 0 '!=' 0 ']' 
++ grep 2.1.4 
++ rbenv version 
+ [[ ! -n '' ]] 
+ echo 'rbenv not installed' 
+1

這可能有助於:[如何調試bash腳本?](http://unix.stackexchange.com/q/155551/74329) – Cyrus

+0

@Cyrus ok,添加調試輸出... – Godzilla74

+0

從我可以推測,我實際上並沒有在我的腳本中運行'sudo -i',而只是在命令前添加'sudo',因此我的rbenv路徑沒有被加載,因爲我實際上並沒有爲root用戶加載bash配置文件? – Godzilla74

回答

0

/usr/local/(或任何rbenv可執行文件安裝)是不是在你的用戶的可執行文件路徑須藤運行時。使用-i或將/usr/local/添加到您的$PATH