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.