como alterar o hashbang para detectar automaticamente o tipo de script

0

Eu tenho o seguinte script:

 1 #!/usr/bin/env sh
 2 #calculate number of tests we will run
 3 lines="$(cat /etc/crontabs/root|wc -l)"
 4 tests="$(($lines - 2))"
 5
 6 echo "1..$tests"
 7 counter=1
 8 etc.... does other stuff

Na linha 1, estou tentando codificá-lo de forma que não precise digitar "sh" para iniciá-lo. Anteriormente, o hashbang era assim:

#!/bin/sh

e o código funcionaria, mas você precisa dizer qual exe deve ser usado para iniciá-lo.

Gostaria de tentar alterá-lo para que o usuário não precise saber que tipo de script é. Acho que fiz algo errado porque quando tento executar meu script, recebo o seguinte erro:

lab-1:/tmp# crontab_test       
-ash: crontab_test: not found

Você pode me dizer onde eu me desviei?

    
por dot 22.03.2018 / 21:38

1 resposta

1

Seu caminho hashbang parece bem.

Seu script está no diretório /tmp ?

O diretório /tmp (normalmente) não está no seu $PATH , então você precisa especificar o diretório na linha de comando. Você pode usar ./ para o diretório atual:

./crontab_test

Alguns sistemas têm o diretório atual . no $PATH , mas isso é considerado um pouco duvidoso do ponto de vista de segurança.

    
por 22.03.2018 / 21:42