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