Executando o shell script

4

Ter um script de shell super simples como esse:

echo "Hello World"

sem linha shebang, o bit executável definido no arquivo e chamado assim:

./my_sript

qual é o interpretador usado para executar o script? Como é encontrado pelo sistema e onde o interpretador padrão é definido?

    
por Mulligan 12.06.2017 / 11:57

2 respostas

3

O shell padrão para este usuário (não o shell atual) será usado. Dê uma olhada em /etc/passwd - está definido lá e será lançado no login. Você pode usar chsh para alterar o shell padrão do usuário atual.

    
por 12.06.2017 / 12:12
0

Eu não concordo com a resposta da jvb. Considere o seguinte script formatado em csh, sem um shebang:

#
set x = 'a'
if ($x == 'a') then
   echo "running csh"
endif

Na minha máquina, onde meu shell padrão é (t) csh, o resultado é:

anukis% ./shell-test
running csh

Agora, edite o script para excluir a linha superior:

set x = 'a'
if ($x == 'a') then
   echo "running csh"
endif

Agora execute novamente e o resultado é:

anukis% ./shell-test
./shell-test: 6: Syntax error: end of file unexpected (expecting "fi")

Qual é a diferença? A maneira antiga de diferenciar csh de (Bourne) sh: se a primeira linha começa com um octothorpe ("#"), suponha que seja um script C-shell, caso contrário, um shell Bourne (-type).

    
por 22.06.2017 / 02:18