Eu tenho um usuário chamado foo
que está usando tcsh
por padrão no /etc/passwd
. Não consigo alterar esse shell padrão. Foo tem um serviço chamado xyz
running, para o qual todos os scripts de inicialização e arquivos .(ponto) contendo variáveis ENV estão no diretório inicial de foo.
Agora também é criado um script de inicialização para executar esse serviço e colocado nele /etc/init.d/xyz
que está escrito em bash.
Agora, o problema é que o serviço não inicia na inicialização e também não consigo executá-lo com meu usuário padrão no login. Só é possível executar quando eu uso foo user e executo o script para iniciar o serviço.
Se eu gostar disso
sudo su foo /home/foo/xyz
ele me mostrará erros como then: then/endif not found.
.
Então, o que eu quero é executar um programa tcsh na inicialização a partir de um script init.d que está no bash. No momento tentei fazer isso
su - foo -c "source /home/foo/.env_vars && /home/foo/bin/xyz start"
mas isso não inicia o serviço no momento da inicialização.
Não tenho certeza de como executar um script tcsh no momento da inicialização.
Responder1
Você também pode:
- use
tcsh -c $script
para executar os scripts com tcsh - defina o shebang (primeira linha) no script como
#!/bin/tcsh
e configure-o como executável; você pode simplesmente iniciá-lo$script
como o comando.