O que é o shebang (#! / bin / bash). [duplicado]

1

por que usamos shebang no início de um arquivo de script de shell. o script será executado sem ele?

Eu tentei executá-lo sem shebang no shell script, mas ele não foi executado.

    
por Ashish Kumar Thakur 18.05.2018 / 12:44

2 respostas

2

Quando um arquivo script começa com a diretiva shebang

#!langpath args

e tem permissões de execução definidas, o Unix irá "substituí-lo" por

exec langpath args path-to-the-script.

Desta forma, normalmente:

  • langpath define o idioma a ser usado, e deve ser o caminho de um interpretador executável da linguagem (programação) (ex: '/ usr / bin / python')
  • o idioma deve aceitar um arquivo de script como um argumento
  • o idioma deve ignorar a diretiva #!... como comentário
por JJoao 18.05.2018 / 13:08
0

Diferentes shells suportam recursos diferentes. Para dar conselhos eficazes, o ShellCheck precisa saber em qual shell seu script será executado. Você receberá um número diferente de avisos sobre coisas diferentes, dependendo do seu shell de destino.

O ShellCheck normalmente determina seu shell de destino do shebang (tendo, por exemplo, #!/bin/sh como a primeira linha). O shell também pode ser especificado a partir da CLI com -s , por ex. shellcheck -s sh file .

Se você não especificar shebang nem -s , o ShellCheck fornecerá esta mensagem e prosseguirá com algum padrão (bash).

Note que este erro não pode ser ignorado com uma diretiva. Não é uma sugestão para melhorar seu script, mas um aviso de que o ShellCheck não tem informações de que precisa ser útil.

    
por delfiler 18.05.2018 / 14:13