chmod não funciona no Mac

2

Eu tenho uma pergunta muito simples. Eu não posso fazer um arquivo executável a partir da linha de comando em um Mac. Isso é o que estou digitando no terminal

cd ./Desktop
echo 'say hello' > hello
chmod +x hello
hello

Ele é executado quando eu clico duas vezes no arquivo, mas não consigo executá-lo na linha de comando. Eu simplesmente recebo "comando não encontrado".

    
por Nick Riches 04.10.2015 / 17:46

1 resposta

3

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.

    
por 04.10.2015 / 17:57