我已经整理了一个简单的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'
答案 0 :(得分:0)
/usr/local/
(或安装rbenv可执行文件的任何地方)不在用户的可执行路径中。使用-i或将/usr/local/
添加到$PATH
。