Primeiro, você deve adicionar o bit de permissão "executar". Usando chmod +x
adiciona, chmod -x
remove.
Segundo, no Unix você deve usar o nome do arquivo exato . Se o arquivo tiver o nome hello.sh
, você deverá executá-lo por hello.sh
, não hello
. (Você provavelmente está acostumado com o Windows e seu% PATHEXT%, que não existe no Unix. Aqui, apenas o bit de execução é considerado e .sh
é insignificante para o sistema - o arquivo pode ser nomeado simplesmente hello
se você quiser.)
Terceiro, por padrão, o diretório atual é não pesquisado por comandos (por motivos de segurança). O script deve estar localizado em seu $ PATH ou você deve executá-lo pelo nome completo do caminho. Usar .
(que significa "o diretório atual") será suficiente.
~/Desktop chmod +x hello.sh ~/Desktop ./hello.sh Hello, world! ~/Desktop ~/Desktop/hello.sh Hello, world! ~/Desktop
( ./hello.sh
significa " hello.sh
no diretório atual".)
Quando você digitou date
, você não executou seu próprio script; você executou o comando date
do sistema (assim como você executa o comando chmod
do sistema quando digita chmod
). O @
não faz fazer a diferença aqui.
O caractere @
indica simplesmente a presença de "metadados estendidos" associados a esse arquivo; provavelmente algo específico para o TextEdit. De acordo com o ls
(1) página de manual, você pode usar ls -l -@
( ls -l@
) para ver os metadados.