Verwenden von rvm in einem Bash-Skript unter CentOS 6.2

Verwenden von rvm in einem Bash-Skript unter CentOS 6.2

Ich versuche, ein Skript zu schreiben, das alle Schritte zur Installation und Einrichtung eines Graylog2-Servers und einer Weboberfläche unter CentOS 6.2 durchläuft. Hier ist der Abschnitt, mit dem ich Probleme habe:

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

Wenn also versucht wird, die RVM-Funktion als Funktion in die Shell zu laden, funktioniert dies nicht, was dazu führt, dass Ruby nicht installiert wird. Ich habe andere Methoden zum Laden der Funktion in die Shell ausprobiert, und zwar wie folgt:

Manuelles Beziehen der Skriptdatei aus einer Root-Installation

source /usr/local/rvm/scripts/rvm

Manuelles Hinzufügen der Umgebungsvariable PATH, um rvm einzuschließen:

PATH=$PATH:/usr/local/rvm/bin
export PATH

Manuelles Aufrufen des Pfads zum RVM-Befehl

/usr/local/rvm/bin/rvm install 1.9.3 --create

Quelle /etc/profile.d/rvm.sh

source /etc/profile.d/rvm.sh

Beachten Sie, dass RVM einwandfrei geladen wird, wenn ich die Shell schließe und mich wieder anmelde. Ich muss jedoch alles von diesem Skript aus tun können, ohne mich ab- und wieder anmelden zu müssen. Ich mache das auch als Root. Sie können sich das Skript, das ich bisher geschrieben habe, in seiner Gesamtheit ansehen.Hier.

Jede Hilfe wird geschätzt.

BEARBEITEN

Nach dem Hinzufügen set -xzum Skript ist hier die Ausgabe beim Versuch, die Funktion zu laden:

+ [[ -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

BEARBEITEN 2

Ich habe in die Datei /usr/local/rvm/scripts/rvm geschaut und ganz am Anfang Folgendes gefunden:

# 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

Ich glaube also, dass dies mein Problem verursacht, bin mir aber nicht sicher. Ich habe keine Erfahrung mit Bash-Skripten :\ Das Problem liegt also meiner Vermutung nach darin, dass meine Shell nicht unterstützt wird(?). Kann das jemand erklären?

Antwort1

Ich beantworte meine eigene Frage, haha

Schalten Sie einfach die erste Zeile um

#!/bin/sh

Zu

#!/bin/bash

in meinem Skript behebt das Problem, das ich hatte. Ich habe herausgefunden, dass das Skript, das als Quelle verwendet werden sollte, sh nicht unterstützt.

verwandte Informationen