J'essaie d'écrire un script qui passe par toutes les étapes pour installer et configurer un serveur graylog2 et une interface Web sous CentOS 6.2. Voici la section qui me pose problème:
curl -L get.rvm.io | bash -s stable
# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
# First try to load from a user install
source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
# Then try to load from a root install
source "/usr/local/rvm/scripts/rvm"
else
printf "ERROR: An RVM installation was not found.\n"
fi
rvm install 1.9.3 --create
rvm use 1.9.3 --default
Ainsi, lorsqu'il essaiera de charger la fonction RVM dans le shell en tant que fonction, cela ne fonctionnera pas, ce qui l'empêchera d'installer Ruby. J'ai essayé d'autres méthodes de chargement de la fonction dans le shell, comme suit:
Rechercher manuellement le fichier de scripts à partir d'une installation racine
source /usr/local/rvm/scripts/rvm
Ajouter manuellement la variable d'environnement PATH pour inclure rvm:
PATH=$PATH:/usr/local/rvm/bin
export PATH
Appel manuel du chemin d'accès à la commande rvm
/usr/local/rvm/bin/rvm install 1.9.3 --create
Sourcing /etc/profile.d/rvm.sh
source /etc/profile.d/rvm.sh
Notez que si je ferme le shell et que je me reconnecte, rvm se charge très bien, mais je dois pouvoir tout faire depuis ce script sans avoir à me déconnecter et à me reconnecter. à partir de la racine. Vous pouvez regarder le script que j'ai écrit jusqu'à présent dans son intégralité ici .
Toute aide est appréciée.
MODIFIER
Après avoir ajouté set -x
au script, voici le résultat quand il essaie de charger la fonction:
+ [[ -s /root/.rvm/scripts/rvm ]]
+ [[ -s /usr/local/rvm/scripts/rvm ]]
+ source /usr/local/rvm/scripts/rvm
++ [[ :braceexpand:hashall:interactive-comments:posix:xtrace: =~ :posix: ]]
++ return 0
+ rvm install 1.9.3 --create
./rvm_test.sh: line 27: rvm: command not found
+ rvm use 1.9.3 --default
./rvm_test.sh: line 28: rvm: command not found
EDIT 2
J'ai examiné le fichier / usr / local / rvm / scripts / rvm et j'ai trouvé ceci au tout début:
# Do not allow sourcing RVM in `sh` - it's not supported
# return 0 to exit from sourcing this script without breaking sh
[[ ":$SHELLOPTS:" =~ ":posix:" ]] && return 0 || true
Donc, je crois que cela cause mon problème mais je ne suis pas sûr. Je n'ai pas l'expérience du script bash: \ Donc, le problème que je devine est que mon shell n'est pas supporté (?) Quelqu'un peut-il préciser?
set -x
au début du script pour voir comment toutes les variables sont développées et pourquoi les tests renvoient false. Etes-vous conscient de ce que si vous exécutez en tant que root, le$HOME
variable donnera/root
?set -x
@DanielAnderssonset -x
vous montrera si le test renvoie vrai ou faux. Renvoie-t-il false même si le fichier existe et a une taille & gt; 0, ou quel est le problème? Vous ne dites pas réellement ce qui ne fonctionne pas.Réponses:
Répondre à ma propre question haha
Il suffit de changer la première ligne
à
dans mon script corrige le problème que je rencontrais. Je me suis rendu compte que le script qui essayait d'être recherché ne supporte pas sh.
la source