Usando rvm dentro de um script bash no CentOS 6.2

0

Estou tentando escrever um script que passe por todas as etapas para instalar e configurar um servidor graylog2 e uma interface da 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

Então, quando ele tenta carregar a função rvm no shell como uma função, ela não funciona, fazendo com que ela não instale o ruby. Eu tentei outros métodos de carregar a função no shell, da seguinte forma:

Como terceirizar manualmente o arquivo de scripts a partir de uma instalação raiz

source /usr/local/rvm/scripts/rvm

Adicionando manualmente a variável de ambiente PATH para incluir 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

Origem /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 muito bem, mas preciso fazer tudo a partir desse script sem precisar sair e fazer o login novamente. também fazendo isso como root. Você pode ver o script que eu escrevi até agora em sua totalidade aqui .

Qualquer ajuda é apreciada.

EDITAR

Depois de adicionar set -x ao 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

EDIT 2

Eu olhei para o arquivo / usr / local / rvm / scripts / rvm e achei isso no começo:

# 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

Então eu acredito que isso está causando o meu problema, mas não tenho certeza. Eu não tenho experiência em scripts bash: \ Então, o problema que eu estou supondo é que meu shell não é suportado (?) Alguém pode esclarecer?

    
por Rob H. 12.04.2012 / 16:10

1 resposta

2

Respondendo minha própria pergunta haha

Basta mudar a primeira linha

#!/bin/sh

para

#!/bin/bash

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

    
por 13.04.2012 / 20:56