J'ai créé un script bash simple pour voir si rbenv
est installé. J'ai installé rbenv l'échelle du système au lieu de par utilisateur using this guide et confirmé qu'il est installé pour les utilisateurs:Vérification du logiciel installé avec 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)
Je dois vérifier si elle est installée pour l'utilisateur root parce que je suis en train de faire les travaux d'administration système dans le script:
#!/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
Cependant, quand je lance le script pour le contexte utilisateur normal (en utilisant sudo):
[email protected]:~$ sudo ./test.sh
./test.sh: line 5: rbenv: command not found
rbenv not installed ... do something
Pourquoi mon script ne ramassant le contexte fo r l'utilisateur root et en détectant que rbenv
est réellement installé?
Mise à jour: ajout sortie de débogage
+ '[' 0 '!=' 0 ']'
++ grep 2.1.4
++ rbenv version
+ [[ ! -n '' ]]
+ echo 'rbenv not installed'
Cela pourrait aider: [Comment déboguer un script bash?] (Http://unix.stackexchange.com/q/155551/74329) – Cyrus
@Cyrus ok, sortie de débogage ajoutée ... – Godzilla74
D'après ce que je peux supposer , Je ne cours pas en fait 'sudo -i' dans mon script, à la place, juste en ajoutant' sudo' aux commandes, donc mon chemin rbenv n'est pas chargé car je ne charge pas le profil bash pour l'utilisateur root? – Godzilla74