Executando scripts tcsh na inicialização no bash env

Executando scripts tcsh na inicialização no bash env

Eu tenho um usuário chamado fooque está usando tcshpor padrão no /etc/passwd. Não consigo alterar esse shell padrão. Foo tem um serviço chamado xyzrunning, 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/xyzque 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/xyzele 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 $scriptpara executar os scripts com tcsh
  • defina o shebang (primeira linha) no script como #!/bin/tcshe configure-o como executável; você pode simplesmente iniciá-lo $scriptcomo o comando.

informação relacionada