Existem dois erros nos seus comandos.
Seu primeiro erro é que seu arquivo não está em um formato executável correto. A primeira linha de um script de shell deve começar com #!
. Se não começar com esses caracteres, não é um script de shell.
Alguns shells possuem soluções alternativas para esses scripts shell incorretamente formatados. Mas essas soluções alternativas só funcionam quando o script é iniciado a partir de um shell e não quando o script é iniciado a partir de outro programa. Além disso, shells diferentes têm soluções diferentes para scripts de shell formatados incorretamente.
Tudo isso significa confiar nessas soluções resultará em comportamento imprevisível e você deve sempre incluir a linha #!
. Por exemplo, você poderia ter digitado:
echo '#!/bin/sh' > hello
echo 'say hello' >> hello
O outro erro é que você não forneceu um caminho para o script ao tentar executá-lo. Você deveria ter digitado:
./hello
Quando você digitar apenas hello
, o shell pesquisará o PATH
do comando. Por motivos de segurança, .
não está em PATH
. Se você precisa criar regularmente scripts de shell, é uma boa ideia criar um diretório para esses scripts de shell e colocar esse diretório em PATH
. Eu pessoalmente uso ~/bin
para scripts de shell e ocasionalmente para pequenos programas compilados.