使用sudo检查已安装的软件

时间:2016-08-16 16:43:34

标签: linux bash ubuntu rbenv

我已经整理了一个简单的bash脚本,看看是否安装了rbenv。我在系统范围内安装了rbenv而不是每用户using this guide并确认已为两个用户安装了它:

user@ubuntu:~$ rbenv version
2.1.4 (set by /usr/local/rbenv/version)

user@ubuntu:~$ sudo -i
root@ubuntu:~$ 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 "$@"

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

但是,当我为普通用户上下文运行脚本时(使用sudo):

user@aaabbbccc:~$ sudo ./test.sh
./test.sh: line 5: rbenv: command not found
rbenv not installed ... do something

为什么我的脚本没有为root用户提取上下文并检测到rbenv实际安装了?

更新:添加了调试输出

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

1 个答案:

答案 0 :(得分:0)

当sudo运行时,

/usr/local/(或安装rbenv可执行文件的任何地方)不在用户的可执行路径中。使用-i或将/usr/local/添加到$PATH