O kernel interpreta a linha que começa com #!
e a usa para executar o script, passando o nome do script; então isso acaba correndo
/bin/rm scriptname
que exclui o script. (Como Stéphane Chazelas aponta , scriptname
aqui é suficiente para encontrar o script - se você especificou um caminho relativo ou absoluto, que é passado como está, caso contrário, qualquer caminho que foi encontrado PATH
é anexado, incluindo possivelmente a sequência de empry se você PATH
contiver isso e o script está no diretório atual. Você pode brincar com um script de eco - #!/bin/echo
- para ver como isso funciona.)
Como hobbs apontou, isso significa que seu script é realmente um rm
script, não um bash
script - o último começaria #!/bin/bash
.
Consulte Como os programas são executados para obter detalhes de como isso funciona no Linux; os comentários nesse artigo fornecem detalhes para outras plataformas. #!
é chamado shebang, você encontrará muitas informações pesquisando esse termo (obrigado a Aaron pela sugestão). Como o jlp apontou, você também o encontrará conhecido como "pound bang" ou "hash bang" ( #
geralmente conhecido como "pound") - em países que não usam £
- ou "hash" e !
"bang" ) A Wikipedia tem mais informações.