Estou em um kali linux de 64 bits.
Eu criei um script python que leva 2 argumentos para iniciar. Não quero digitar sempre os mesmos caminhos exatos ou pesquisar no histórico dos comandos que usei no terminal. Então, decidi criar um script simples que chama o script python com seus argumentos.
#! /bin bash
python CreateDB.py ./WtfPath ./NoWtfPath/NewSystem/
É exatamente o mesmo comando que eu usaria no terminal. No entanto, recebo uma mensagem de erro ao tentar executar o arquivo de script.
bash: ./wtf.sh: /bin: bad interpreter: Permission denied
O wtf.sh possui direitos executáveis.
O que está errado?
fonte
#!/bin/sh
(em vez de#!/bin/bash
), a menos que saiba que está usandobash
recursos.sh
quando eu sei que não estou usando os recursos do bash).which bash
é útil. Isso retorna/bin/bash
. Na parte superior do meu script Bash, eu adiciono#!/bin/bash
. Então, quando quero executar o script Bash, entrobash foo.sh
. Entãowhich sh
é usado da mesma maneira.sh foo.sh
/bin/sh
é algo que não é o Bash e existem bashismos despercebidos no script). Veja aqui.Vale a pena notar que, se o ponto de montagem no qual o script reside possui o atributo 'noexec', você pode mostrar o que deseja e ainda não funcionará, mas chamar o intérprete com o script como argumento (desde que que, por sua vez, não tenta executar outro script em uma montagem noexec).
fonte