Como executo scripts .sh?

344

Sempre que abro um arquivo .sh, ele é aberto no gedit em vez do terminal. Não encontro nenhuma opção semelhante a Clique com o Botão DireitoAbrir comOutra Aplicação ...Terminal .

Como faço para abrir este arquivo no terminal?

Alex
fonte
Esse script tem como objetivo configurar variáveis ​​env para uso posterior?
Rob
1
Você não deve usar extensões em scripts. Em algum momento no futuro, você poderá achar que um idioma diferente é mais adequado para executar a tarefa que seu script atual está executando. E então você tem um problema. Você mantém o nome antigo, com uma extensão completamente enganosa, ou renomeia-o, possivelmente tendo que editar muitos lugares onde seu script é usado?
Geirha
Você não precisa da extensão do arquivo. É bom ter, mas não é necessário. O sistema operacional não analisa a extensão do arquivo. Ele analisa os dados
ActionParsnip
5
Meh, se você reescrever foo.sh em Ruby, você sempre pode usar o arquivo .sh para lançarruby foo.rb
glenn jackman
No Dolphin você pode pressionar F4 e um console abre
Motte001

Respostas:

523

Dê permissão de execução ao seu script:

chmod +x /path/to/yourscript.sh

E para executar seu script:

/path/to/yourscript.sh

Como .se refere ao diretório atual: se yourscript.shestiver no diretório atual, você pode simplificar isso para:

./yourscript.sh
karthick87
fonte
13
Uma resposta apenas +1 para mostrar a adição de permissões de execução apenas em um terminal.
Hailwood #
83
Se você fizer isso bash /path/to/yourscript.sh, então você não precisachmod +x
Aleksandr Levchuk
4
Na verdade, você pode usar . /path/to/yourscript.shse o script precisar configurar algumas variáveis ​​de ambiente.
Rob
1
Ninguém menciona o tradicional: ./path/to/yourscript.sh(sem o espaço depois .)? Acho que um é o mais simples e fácil de usar ... Mas, de qualquer forma, aqui está a minha alternativa que deve fazer quase o mesmo que ./faria, embora eu não perceba por que você não usaria ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... edite FILENAMEa seu gosto . Observe também que shserá usado se não houver alternativa.
precisa
88

Você precisa marcar os scripts de shell como executáveis ​​para executá-los no gerenciador de arquivos:

  1. Clique com o botão direito do mouse no seu .sharquivo e selecione Propriedades :

    insira a descrição da imagem aqui

  2. Na guia Permissões , marque Permitir a execução de arquivo como programa :

    insira a descrição da imagem aqui

  3. Feche a janela Propriedades e clique duas vezes no arquivo. Uma caixa de diálogo será exibida, oferecendo a opção de executar o script em um terminal:

    insira a descrição da imagem aqui

Isaías
fonte
10
Isso não está funcionando no Ubuntu 13.04. Mantém a abertura no gedit de qualquer maneira, nunca me pede para executar. Edit: Nvm, imjustmatthew responde a isso.
MJ #
Antes de usar isso, precisamos fazer a permissão do arquivo para executar usando chmod. chmod + x filename.sh ou chmod 755 filename.sh
Arvind Rawat
Eu não tenho pop-up! IDE é aberto imediatamente, e não um pop-up
Verde
Como é que não consigo encontrar "executar no terminal" em nenhum lugar da minha interface? (Ubuntu 18.04)
Daniel Möller
1
@ DanielMöller, aqui está a resposta para sua pergunta. askubuntu.com/questions/38661/how-do-i-run-sh-files/...
Akhilesh Dhar Dubey
33

Abra um terminal e navegue até a pasta em que o .sharquivo está localizado. Então digite:

sh <name of file>.sh
pé italiano
fonte
a melhor maneira de abrir qualquer aplicativo. Navegue para o diretório .sh e abra-o no prompt de comando. use sh <nome do arquivo como mostrado acima> .sh se precisar de permissão, use chmod + x /path/to/yourscript.sh ou clique com o botão direito do mouse e mude a permissão para todos
Durgesh Kumar
24

Pré-requisito

Antes de poder executar o arquivo .sh, é necessário torná-lo executável:

  1. Clique com o botão direito do mouse no arquivo
  2. Selecione Propriedades
  3. Selecionar permissões
  4. Selecione Permitir a execução de arquivo como um programa

Aviso

Confie na fonte de onde você obteve o arquivo. Pode ser um vírus .

A maneira muito simples

  1. Clique duas vezes no arquivo
  2. Clique em executar no terminal

Isso tem problema. O terminal fechará imediatamente e você não poderá ver a saída.

A maneira simples

  1. Abra Aplicativos -> Acessórios -> Terminal
  2. Arraste e solte o arquivo .sh no terminal e pressione Enter

A maneira como os profissionais fazem isso

  1. Abra Aplicativos -> Acessórios -> Terminal
  2. Encontre onde o arquivo .sh

    • Use os comandos lsecd
    • lslistará os arquivos e pastas na pasta atual . Experimente: digite "ls" e pressione Enter.
    • Depois de ver a pasta na qual deseja ir, execute cd, seguido por um espaço, seguido por um nome de pasta
    • Se você quando em uma pasta que você não quer, correr cd ..para ir um nível acima
  3. Execute o arquivo .sh

    • Uma vez que você pode ver, por exemplo script1.sh, com lsprazo isso:

      ./script.sh

Por que fazer isso da maneira complicada?

O terminal possui um rico conjunto de ferramentas poderosas acessíveis digitando os comandos. Profissionais localizam o arquivo .sh digitando lse cd. Quando você estiver na pasta atual correta, poderá executar o script assim:

./script1.sh

ou você pode executar e redirecionar a saída para um arquivo:

./script1.sh > out.txt

ou você pode filtrar a saída de palavras-chave (por exemplo, "maçãs") e depois redirecionar para um arquivo:

./script1.sh | grep apples > ./only-apples

Existem milhares de coisas que você pode fazer nesse arquivo apenas digitando alguns comandos.

Outro, você pode baixar um arquivo da Internet com um comando simples:

wget www.google.com/images/logos/ps_logo2.png

E então abra o arquivo assim:

shotwell ps_logo2.png
Aleksandr Levchuk
fonte
6
Im não tem certeza de que os profissionais de maneira fazê-lo é correta, é mais um caso de maneira simples a avançado (para pelo controle de saída) forma
Hailwood
É bom saber que eu fiz da maneira que os profissionais fazem no meu primeiro teste. Eu pensei que era o caminho do usuário básico.
NelsonGon 11/06
19

No Ubuntu 13.04, os arquivos executáveis ​​abertos no Nautilus agora são abertos no gedit por padrão, em vez de solicitar ao usuário que os execute. Para habilitar o comportamento clássico, você precisa ajustar as preferências:

Nautilus → menu Editar → Preferências → guia Comportamento → Clique no botão de opção próximo a Perguntar a cada vez.

imjustmatthew
fonte
A pessoa que fez a pergunta está falando sobre Ubuntu 10.10
Edwin
1
Obrigado!!! Não sei por que eles mudariam isso, não conseguiam descobrir como executar nada.
MPEN
1
Esta é a resposta certa para os ubuntus mais recentes.
gaRex
Como você chega ao Nautilus em 15.10?
Yaakov Ainspan
No Ubuntu 18.04, você pode acessar as preferências abrindo um diretório e clicando em "Arquivos -> Preferências" na barra superior.
tparker
7

Vá para o diretório em que o .sharquivo está usando cd. Neste exemplo, eu armazenei meu sharquivo como~/Desktop/shell_practice/test.sh

primeiro faça pwdpara descobrir onde você está e, se ele retornar /home/username(onde usernameestá seu nome de usuário real), você poderá executar

cd Desktop/shell/practice

Se você parece estar em outro lugar, pode usar o caminho absoluto

cd ~/Desktop/shell/practice

ou

cd $HOME/Desktop/shell/practice

ou mesmo

cd /home/$USER/Desktop/shell/practice

essas são todas as formas de descrever o mesmo lugar. Depois de chegar ao local do seu script, digite

ls

Se você puder ver o sharquivo na saída, poderá usá chmod-lo para torná-lo executável. No meu caso, lembre-se, o nome do arquivo é test.sh, então eu correria

chmod u+x test.sh

Agora que estamos no mesmo diretório que o script, precisamos especificar para o shell que queremos executar o arquivo, fornecendo sua localização ./(o diretório atual seguido por um separador de caminho, para distingui-lo do nome do arquivo). Para executar meu arquivo, digitei:

./test.sh

Se o seu script foi escrito corretamente, ele será executado sem erros ...

Aqui está um exemplo ao vivo: Aqui está um exemplo ao vivo

O Exorcista
fonte
Isso funcionou para mim para instalar o Netbeans no ubuntu
RuD3B0y
1
Wb, @ RuD3B0y, tentei manter as respostas melhores para noobs, sem conteúdo de alta tecnologia, se você tiver algumas edições, será bem-vindo.
TheExorcist
4

2 etapas principais.

  1. no terminal, use o gedit para escrever e salvar scripts com a extensão ".sh" na área de trabalho. (mas qualquer editor de texto pode ser usado)

  2. abra o Nautilus e clique com o botão direito do mouse no arquivo script.sh.

    • nas propriedades, marque a caixa de seleção "permitir a execução do arquivo .."

    • no menu Nautilus, clique em arquivo, em preferências e depois em comportamento

    • marque a opção "executar arquivos de texto executáveis ​​quando abertos".

Agora, quando você clica duas vezes no arquivo na área de trabalho, ele deve ser executado. não há necessidade .ou./

roubar
fonte
3
  1. Clique com o botão direito do mouse no .sharquivo e torne-o executável.

  2. Abra um terminal ( Ctrl+ Alt+ T).

  3. Arraste o .sharquivo para a janela do terminal e assista com admiração.

1p_bunny
fonte
1
Bem-vindo ao Ask Ubuntu! Eu recomendo editar esta resposta para expandi-la com detalhes específicos sobre como executar a primeira etapa. (Veja também Como faço para escrever uma boa resposta? Para o conselho geral sobre que tipos de respostas são consideradas mais valiosas sobre AskUbuntu.)
David Foerster
3

Há algumas maneiras de fazer isto.

Opção 1

  1. No terminal, acesse o diretório em que o arquivo Bash está cd(alterar diretório).

    Ex. cd Downloads

  2. Corre bash <filename>.sh

    Isso também funciona com arquivos .run. Há um exemplo desse uso nesta página da Web sobre a atualização do Rhythmbox.

opção 2

  1. No terminal, navegue até o diretório em que o arquivo bash está.

  2. Corre chmod +x <filename>.sh

  3. No Nautilus, abra o arquivo.

Kenny Stier
fonte
3

Para o Ubuntu 18.04 , há uma pequena modificação, pois você não recebe uma caixa de diálogo pop-up.

Então, o que você precisa fazer é:

Clique com o botão direito do mouse em Arquivos, selecione Preferências> selecione a guia Comportamento> Marque a opção 'Pergunte o que fazer' em Arquivo de texto executável.

Agora, quando você clica duas vezes em qualquer arquivo .sh, é exibida uma janela pop-up. Lá você pode selecionar a opção "executar no terminal" para executar o arquivo .sh.

insira a descrição da imagem aqui

Akhilesh Dhar Dubey
fonte
2

No Ubuntu 16.04, é como abri-lo no Terminal:

Vá para File Manager > Edit > Preferences > Behaviorpara Executable Text Filese selecione Ask each time.

O problema é que é por padrão definido como View Executable Files when they are opened.

Leniel Maccaferri
fonte
1

Se você colocar seu shell script ou outro executável criado em / usr / local / bin, ele será encontrado e executado sem precisar fornecer um caminho de pasta na linha de comando ou adicionar ./ ​​ao nome. Por exemplo, criei o seguinte script bash simples de 3 linhas para exibir os UUIDs de disco:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

Liguei para o arquivo uuid e o coloquei em / usr / local / bin. Tudo o que preciso inserir na linha de comando é:

uuid
fragos
fonte
0

Bem, eu também enfrentei o mesmo problema. Eu queria executar o arquivo .sh e ele foi aberto com o Gedit no CentOS 7. Então, aqui está o que eu fiz:

  1. Naveguei para o caminho do .sharquivo que queria executar.
  2. Eu abri o terminal.
  3. Simplesmente arrastei e soltei o na janela do terminal e ele automaticamente pegou o arquivo junto com o caminho como entrada.
  4. Pressione Enter e você estará pronto!
Jen Bates
fonte
0

O problema que encontrei em algumas distribuições é que elas ocultaram a opção de preferências no Nautilus, mas corrigi-lo no Ubuntu e outras distribuições usando o Gnome3 é o mesmo (literalmente, acabei de fazer a versão do Fedora e postar a correção real para me lembrar como no futuro).

  1. Instalar dconf-editor

    sudo apt-get install dconf-editor
  2. Executar dconf-editorusando a conta de usuário em que você deseja isso, ou seja, NÃO raiz

    dconf-editor
  3. Navegue para o seguinte esquema:

    org.gnome.nautilus.preferences

  4. Altere a opção padrão para não abrir por padrão:

    Localize, executable-text-activationclique na palavra displaye mude paraask

que lhe dará a opção de editar, visualizar ou executar o arquivo daqui para frente

Snider
fonte
0

Eu sou um noob no Linux e só tive o mesmo problema. Se todo o resto falhar:

  1. Terminal aberto
  2. Abra a pasta que contém o arquivo .sh
  3. Arraste e solte o arquivo na janela do terminal
  4. O caminho do arquivo aparece no terminal. Pressione Enter.
  5. Voila, seu arquivo .sh é executado.
Linux_noob
fonte
-2

Você também pode usar .truques, com a sugestão de outras respostas.

Por exemplo:

chmod +x filename.sh, supondo que você já tenha acessado o caminho do arquivo, execute o arquivo com qualquer um destes comandos:

sh filename.sh

./filename.sh

. filename.sh
Awais
fonte
2
aviso : esses três comandos não são equivalentes. Se seu shebang fizer referência a um binário diferente (como Stack), o terceiro comando tentará analisar os argumentos com o Bash, o que falhará.
Jezen Thomas