
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 -x
al 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.