2016-08-16 86 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