Eu tenho um usuário configurado no Ubuntu 14.
Se eu verificar quando logado como usuário
build@linux-build-agent-1:~$ type rvm | head -1
rvm is a function
No entanto, esta máquina será um agente teamcity ...
Quando um trabalho é executado no contexto do serviço teamcity, vemos
[13:19:11][Step 1/1] RVM is not a function, selecting rubies with 'rvm use ...' will not work.
[13:19:11][Step 1/1]
[13:19:11][Step 1/1] You need to change your terminal emulator preferences to allow login shell.
[13:19:11][Step 1/1] Sometimes it is required to use '/bin/bash --login' as the command.
[13:19:11][Step 1/1] Please visit https://rvm.io/integration/gnome-terminal/ for an example.
Eu tentei vários comandos tentando forçar o serviço a ser executado em um shell de login
su - build -c 'source "$HOME/.rvm/scripts/rvm" && /home/build/buildAgent/bin/agent.sh start'
sudo -u build -i bash -lc '/home/build/buildAgent/bin/agent.sh start'
su - build -c '/home/build/buildAgent/bin/agent.sh start'
dentro do script /etc/init.d/
sem efeito.
Se eu executar source "$HOME/.rvm/scripts/rvm
na cabeça do script em teamcity, então tudo está OK, mas há vários usuários e não posso pedir a todos que se lembrem de fazer isso.
Foi assim que instalei o RVM ou ...?
Para esclarecer:
1) quando estou logado como o usuário sobre SSH rvm está instalado corretamente e funciona como esperado. Conforme mostrado por type rvm | head -1
= > 'rvm é uma função'
2) quando um serviço efetua login, pois o usuário rvm não está funcionando corretamente.
Eu quero que o rvm funcione quando executado no contexto do serviço, para que os usuários não precisem explicitamente source "$HOME/.rvm/scripts/rvm
em seus scripts de construção
Normalmente, esse problema é causado por não ser executado como um shell de login. Então eu preciso saber como executar um serviço como um shell de login. Ou como lidar com o rvm para que ele possa funcionar fora do contexto de shell de login