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'
這可能有助於:[如何調試bash腳本?](http://unix.stackexchange.com/q/155551/74329) – Cyrus
@Cyrus ok,添加調試輸出... – Godzilla74
從我可以推測,我實際上並沒有在我的腳本中運行'sudo -i',而只是在命令前添加'sudo',因此我的rbenv路徑沒有被加載,因爲我實際上並沒有爲root用戶加載bash配置文件? – Godzilla74