Como executo um arquivo .sh ou .command no Terminal

87

Eu sempre quis poder executar um script que eu baixei online diretamente do Finder, mas apenas clicar duas vezes no arquivo não funciona.

Maximus
fonte

Respostas:

103

Abra Terminal, digite sh /path/to/filee pressione enter.

Mais rápido é digitar she um espaço e, em seguida, arraste o arquivo para a janela e solte o ícone em qualquer lugar da janela.

Maximus
fonte
3
O que você acha que acontecerá se o script do shell for escrito na sintaxe de outro shell, como tcsh, zsh ou ksh? O sufixo shindica um script de shell que não "executa o script neste shell".
Fd0 / /
3
@ fd0 A linha shebang cuidará disso.
precisa saber é o seguinte
4
@ user14492- Quando invocar um shell script, pois shell shell_scripta linha shebang é ignorada. O shell lê a primeira linha como um comentário.
Fd0
@ fd0, eu não entendo. Como é sh /path/to/filesemanticamente diferente da alternativa /path/to/file.sh?
Pacerier 15/08/19
2
@ Pacerier- Na primeira forma, o usuário que está chamando deve poder ler o arquivo e escolher qual intérprete o lerá. No segundo formulário, as permissões do arquivo devem ser lidas e executadas para o usuário que está chamando e o intérprete é determinado pelo hash bang na primeira linha do script. Nos dois casos, o kernel não interpreta o sufixo no arquivo.
Fd0
12

Como alternativa, você também pode fazer

cd /directory/with/executable
chmod +x executable     # only required if your file is not already executable
./executable

que também executará o arquivo executável com seu shell especificado (se especificado no shebang #!/bin/(shell)

talvez talvez
fonte
11
Na pergunta, diz "execute um script que eu baixei online". Arquivos baixados da Internet geralmente têm permissões definidas para 644.
nohillside
@patrix Eu acho que não é apenas a internet, mas todos os arquivos que são copiados de outro sistema de arquivos para o seu por causa da máscara padrão em sua conta.
precisa saber é o seguinte
9
chmod u+x myfile.sh
cp myfile.sh /usr/local/bin

edite ~/.bash_profilee adicione a seguinte linha:

alias myfile=./myfile.sh

execute a seguinte linha de comando:

source ~/.bash_profile

então você poderá executar seu arquivo como um programa

$ myfile

Reza Farshi
fonte
no Ubuntu, qualquer script no seu caminho pode ser executado enquanto você tiver #~/bin/sh, enquanto no OSXscript deve haver .shextensão e um aliaspara cada um deles. : -O
Fabrizio Bertoglio 12/07
6

Siga estas etapas para executar os arquivos de script:

  1. Clique com o botão direito do mouse no arquivo .sh.

  2. Passe o mouse sobre Abrir com .

  3. Escolha Outros ... .

  4. Você deve estar na pasta Aplicativos . Abra a pasta Utilitários e selecione Terminal.app.

  5. Se você não conseguir selecionar Terminal.app, altere os aplicativos ativados de Aplicativos recomendados para Todos os aplicativos . Está na parte inferior da janela.

  6. Se você deseja abrir todos os .sharquivos com o Terminal.app, marque Sempre abrir com .

  7. Pressione o botão Abrir no canto inferior direito da janela.

stwykd
fonte
3

O motivo pelo qual não funciona após o download é que as permissões do arquivo não permitem. Para habilitar as permissões de execução, abra o Terminal e digite chmod 755 /path/to/script. Em vez de digitar o caminho completo, você pode arrastar o script para a janela Terminal do Finder. Então, para executar, basta entrar /path/to/script. Novamente, você pode arrastar e soltar o arquivo na janela do Terminal. Essa sintaxe deve executar o script usando o shell correto, conforme definido na primeira linha do script.

Elliott
fonte
Meu arquivo .sh é aberto no editor de texto com o qual eu criei o arquivo. Como posso abri-lo no Terminal? Eu defini as permissões corretas.
Bart
@art Você precisa adicionar a extensão .command para executar um script diretamente no localizador.
precisa saber é o seguinte