Usando rvm em um script bash no CentOS 6.2

Usando rvm em um script bash no CentOS 6.2

Estou tentando escrever um script que passe por todas as etapas de instalação e configuração de um servidor graylog2 e interface web no CentOS 6.2. Aqui está a seção com a qual estou tendo 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

Portanto, quando ele tenta carregar a função rvm no shell como uma função, ela não funciona, fazendo com que não instale o Ruby. Tentei outros métodos de carregar a função no shell, como segue:

Obtendo manualmente o arquivo de scripts de uma instalação raiz

source /usr/local/rvm/scripts/rvm

Adicionando manualmente a variável de ambiente PATH para incluir o rvm:

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

Chamando manualmente o caminho para o comando rvm

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

Fonte /etc/profile.d/rvm.sh

source /etc/profile.d/rvm.sh

Observe que se eu fechar o shell e efetuar login novamente, o rvm será carregado perfeitamente, mas preciso ser capaz de fazer tudo a partir deste script sem precisar sair e fazer login novamente. de como raiz. Você pode ver o roteiro que escrevi até agora na íntegraaqui.

Qualquer ajuda é apreciada.

EDITAR

Depois de adicionar set -xao script, aqui está a saída quando ele tenta carregar a função:

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

Eu olhei no arquivo /usr/local/rvm/scripts/rvm e encontrei isso logo no início:

# 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

Acredito que isso esteja causando o meu problema, mas não tenho certeza. Não tenho experiência em scripts bash: \ Então, o problema que suponho é que meu shell não é compatível (?) Alguém pode esclarecer?

Responder1

Respondendo minha própria pergunta haha

Apenas mudando a primeira linha

#!/bin/sh

para

#!/bin/bash

no meu script corrige o problema que estava tendo. Eu descobri que o script que estava tentando ser originado não suporta sh.

informação relacionada