2016-08-16 3 views
1

간단한 bash 스크립트를 사용하여 rbenv이 설치되었는지 확인했습니다. 나는 다양한 시스템 대신에 사용자 별 using this guide을 rbenv 설치가 모두 사용자를 위해 설치되어 확인 :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) 

것은 내가 스크립트 내에서 시스템 관리 작업을 수행하고 있기 때문에이 루트 사용자를 위해 설치되어 있는지 확인해야합니다 : 나는 일반 사용자 컨텍스트 (사용 sudo를를) 스크립트를 실행할 때

#!/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 

그러나 :

[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'를 추가하기 만하면 root 사용자를위한 bash 프로필을 실제로로드하지 않기 때문에 내 rbenv 경로가로드되지 않고 있습니까? – Godzilla74

답변

0

/usr/local/ (또는 rbenv 실행 설치는 곳) sudo를 실행할 때 사용자의 실행 경로에 있지 않습니다. -i를 사용하거나 $PATH/usr/local/을 추가하십시오.