使用sudo检查安装的软件
问题描述:
我已经将一个简单的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'
答
/usr/local/
(或任何rbenv可执行文件安装)是不是在你的用户的可执行文件路径须藤运行时。使用-i或将/usr/local/
添加到您的$PATH
。
这可能有助于:[如何调试bash脚本?](http://unix.stackexchange.com/q/155551/74329) – Cyrus
@Cyrus ok,添加调试输出... – Godzilla74
从我可以推测,我实际上并没有在我的脚本中运行'sudo -i',而只是在命令前添加'sudo',因此我的rbenv路径没有被加载,因为我实际上并没有为root用户加载bash配置文件? – Godzilla74