.sh requer sh app.sh mesmo com a linha '#! / bin / bash'

6

Estou com a impressão de que, se eu incluir a linha

#!/bin/bash

no início do meu arquivo, ele será reconhecido como um script bash que eu posso executar apenas por

file.sh

em vez de

sh file.sh

Mas no meu caso, file.sh dá algo como test.shtest.sh: command not found . Por que isso?

UPDATE

Eu noto que preciso usar ./ . Mas eu pensei que vai olhar no diretório atual de qualquer maneira?

./test.sh
    
por Jiew Meng 13.08.2011 / 15:10

2 respostas

12

Primeiro, você precisa ter certeza de que o arquivo é executável:

chmod +x file.sh

E, em seguida, para executá-lo, você precisa colocá-lo em seu PATH, ou seja, um dos diretórios de arquivos que o sistema operacional procura ao procurar arquivos para serem executados, que você pode encontrar com echo $PATH ou para digitar:

./file.sh

Em vez de digitar apenas file.sh .

Você pode digitar apenas file.sh , se estiver em seu PATH, o que eu recomendo. Um bom lugar é em ~/bin . Crie essa pasta se ela não estiver lá e, no Ubuntu, ela será adicionada ao seu caminho quando você fizer login.

    
por frabjous 13.08.2011 / 15:50
5

Você precisa iniciá-lo com ./file.sh, porque o diretório atual não está no PATH.

Se isso não for suficiente, porque você perdeu, o que o frabjous sugere, para chmod a+x , você deve iniciar programas começando com um shebang #!/bin/bash com

bash file.sh

não

sh file.sh

mesmo se sh for um link simbólico para / bin / bash.

O shell verifica como ele foi invocado e pode ser chamado como sh para agir em um modo compatível, portanto, pode falhar em lidar com alguns bashisms, o que funcionaria se invocado como bash file.sh .

Esse não foi seu problema, mas pode se tornar um, se você não conhece essa distinção sutil.

    
por user unknown 13.08.2011 / 15:59

Tags