É melhor usar uma linha shebang para executar um script?

2

Eu estava procurando por shebang e me perguntando por que eu iria usá-lo. Eu poderia executar um script bash usando:

bash foo.sh

ou

./foo.sh

(com uma linha shebang em foo.sh)

Quais são os prós e contras de cada um e qual deles devo usar por padrão?

    
por Lee Kang 03.02.2015 / 20:22

2 respostas

5

Eu diria que sim, é intrinsecamente melhor usar um shebang.

Pro:

Se você colocar todos os seus scripts em $PATH (talvez /usr/local/bin ou ~/bin ) e marcá-los como executáveis, poderá executá-los por nome sem pensar em qual interpretador precisar invocar (bash, Python , Ruby, Perl, etc.).

Se você colocar um arquivo executável chamado foo com um shebang em qualquer lugar no seu $PATH , você pode simplesmente digitar foo para executá-lo.

Con:

Você precisa digitar #!/bin/bash na parte superior e chmod +x no arquivo.

Este é um custo quase zero para um retorno muito conveniente.

    
por 03.02.2015 / 20:31
0

O principal motivo para usar um hashbang é especificar o intérprete exato que você deseja usar. Embora escrever scripts de shell portáveis seja legal, geralmente se utiliza alguns recursos de um shell específico (a palavra "bashism" tem uma base no mundo real) e, portanto, é desejável deixar claro o que deve ser o intérprete.

Ele também não está limitado somente a scripts shell - em nada além de um shell script, o hashbang é uma obrigação, caso contrário o sistema não saberá o que fazer com o arquivo e tentará interpretar o script com o shell padrão do usuário. Que geralmente não é a operação desejada para AWK, Perl, Python, Ruby, Tcl / Tk ... você escolhe. O AWK é, na verdade, outro exemplo do motivo pelo qual o hasbang é importante - há diferenças sutis entre várias implementações e a exigência de um intérprete específico pode ser uma boa maneira de evitar decepções inesperadas. O mesmo vale para os scripts Python que são apenas versão 2/3.

    
por 03.02.2015 / 21:14