Se você adicionar a opção '-', ele carregará o perfil do myuser. Em outras palavras, você pode ter variáveis de ambiente de perfil carregadas enquanto está sem cabeça.
su - myuser -c "cmd_to_execute"
Eu tenho um servidor que executa o Fedora 19. Quando o servidor é inicializado, eu preciso executar vários comandos. Eu faço isso no arquivo /etc/rc.d/rc.local
. Isso funciona bem. Agora preciso iniciar meu nodejs
server desse script.
Eu não quero iniciar o programa do servidor como root
. Então, tentei algo como o seguinte no arquivo rc.local
.
su myuser -c /home/myuser/project/path/prod_start.sh
Isso executa prod_start.sh
como myuser
. Mas em prod_start.sh
, estou alterando o diretório para o diretório raiz de aplicativos. Também espera que algumas variáveis de ambiente sejam configuradas antes da execução. Mas como essas variáveis de ambiente são definidas em bash_profile
para o usuário myuser
, nenhuma delas entrou em vigor e o script falhou.
Eu estou querendo saber como posso executar um comando como um usuário diferente com todas as variáveis de ambiente necessárias para ele? Devo definir todas essas variáveis de ambiente no nível do sistema para que elas fiquem disponíveis para todos os usuários?
Se você adicionar a opção '-', ele carregará o perfil do myuser. Em outras palavras, você pode ter variáveis de ambiente de perfil carregadas enquanto está sem cabeça.
su - myuser -c "cmd_to_execute"