Usando rvm dentro de un script bash en CentOS 6.2

Usando rvm dentro de un script bash en CentOS 6.2

Estoy intentando escribir un script que siga todos los pasos para instalar y configurar un servidor Graylog2 y una interfaz web en CentOS 6.2. Aquí está la sección con la que tengo problemas:

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

Entonces, cuando intenta cargar la función rvm en el shell como una función, no funcionará, lo que provocará que no instale Ruby. Probé otros métodos para cargar la función en el shell, de la siguiente manera:

Obtener manualmente el archivo de scripts desde una instalación raíz

source /usr/local/rvm/scripts/rvm

Agregar manualmente la variable de entorno PATH para incluir rvm:

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

Llamar manualmente a la ruta al comando rvm

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

Abastecimiento /etc/profile.d/rvm.sh

source /etc/profile.d/rvm.sh

Tenga en cuenta que si cierro el shell y vuelvo a iniciar sesión, rvm se carga bien, pero necesito poder hacerlo todo desde este script sin tener que cerrar sesión y volver a iniciarla. También estoy haciendo esto desde como raíz. Puedes ver el guión que he escrito hasta ahora en su totalidad.aquí.

Se agradece cualquier ayuda.

EDITAR

Después de agregar set -xal script, aquí está el resultado cuando intenta cargar la función:

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

EDITAR 2

Miré en el archivo /usr/local/rvm/scripts/rvm y encontré esto desde el principio:

# 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

Entonces creo que esto está causando mi problema, pero no estoy seguro. No tengo experiencia en scripting bash:\ Así que el problema que supongo es que mi shell no es compatible (?). ¿Alguien puede aclararlo?

Respuesta1

Respondiendo a mi propia pregunta jaja

Simplemente cambiando la primera línea

#!/bin/sh

a

#!/bin/bash

en mi script soluciona el problema que estaba teniendo. Descubrí que el script que intentaba obtener no es compatible con sh.

información relacionada