Come eseguo gli script .sh?


344

Ogni volta che apro un file .sh, lo apre in gedit anziché nel terminale. Non riesco a trovare alcuna opzione simile a Fare clic destroApri conAltre applicazioni ...Terminale .

Come faccio ad aprire questo file nel terminale?


Quello script ha lo scopo di impostare le variabili env per un ulteriore utilizzo?
Rob

1
Non utilizzare estensioni negli script. Ad un certo punto in futuro, potresti scoprire che una lingua diversa è più adatta a svolgere il compito che sta eseguendo il tuo script corrente. E poi hai un problema. Mantenete il vecchio nome, con un'estensione completamente fuorviante, o lo rinominate, possibilmente dovendo modificare molti luoghi in cui viene utilizzato il vostro script?
geirha,

Non è necessaria l'estensione del file. È bello avere ma non è necessario. Il sistema operativo non esamina l'estensione del file. Guarda i dati
ActionParsnip

5
Meh, se riscrivi foo.sh in ruby, puoi sempre usare il file .sh per lanciarloruby foo.rb
glenn jackman,

In Dolphin puoi premere F4 e si apre una console
Motte001,

Risposte:


523

Autorizza l'esecuzione del tuo script:

chmod +x /path/to/yourscript.sh

E per eseguire il tuo script:

/path/to/yourscript.sh

Poiché si .riferisce alla directory corrente: se si yourscript.shtrova nella directory corrente, è possibile semplificare questo per:

./yourscript.sh

13
+1 risponde solo per mostrare l'aggiunta di autorizzazioni di esecuzione in un modo solo terminale.
Hailwood,

83
Se lo fai bash /path/to/yourscript.sh, non ti servechmod +x
Aleksandr Levchuk,

4
In realtà, è possibile utilizzare . /path/to/yourscript.shse lo script deve impostare alcune variabili di ambiente.
Rob

1
Nessuno menziona il tradizionale: ./path/to/yourscript.sh(senza lo spazio dopo .)? Trovo che uno sia il più semplice e facile da usare ... Ma comunque, ecco la mia alternativa che dovrebbe fare quasi lo stesso di quanto ./farebbe, anche se non vedo perché non dovresti usare ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... modifica FILENAMEa tuo piacimento . Si noti inoltre che shverrà utilizzato se non ci sono alternative.
MiJyn,

88

È necessario contrassegnare gli script di shell come eseguibili per eseguirli dal file manager:

  1. Fare clic con il tasto destro sul .shfile e selezionare Proprietà :

    inserisci qui la descrizione dell'immagine

  2. Nella scheda Autorizzazioni , selezionare Consenti esecuzione file come programma :

    inserisci qui la descrizione dell'immagine

  3. Chiudi la finestra Proprietà e fai doppio clic sul file. Apparirà una finestra di dialogo che ti darà la possibilità di eseguire lo script in un terminale:

    inserisci qui la descrizione dell'immagine


10
Questo non funziona in Ubuntu 13.04. Mantiene comunque l'apertura in gedit, non mi chiede mai di eseguire. Modifica: Nvm, imjustmatthew risponde a questa domanda.
Aprire il

Prima di usare questo, dobbiamo fare il permesso per eseguire il file usando chmod. chmod + x nomefile.sh o chmod 755 nomefile.sh
Arvind Rawat

Non ho popup! L'IDE viene aperto immediatamente, non un popup
Verde

Come mai non riesco a trovare "run in terminal" da nessuna parte sulla mia interfaccia? (Ubuntu 18.04)
Daniel Möller

1
@ DanielMöller, ecco la risposta alla tua domanda. askubuntu.com/questions/38661/how-do-i-run-sh-files/…
Akhilesh Dhar Dubey

33

Apri un terminale e vai alla cartella in cui .shsi trova il file. Quindi digitare:

sh <name of file>.sh

il modo migliore per aprire qualsiasi applicazione. Passare alla directory .sh quindi aprirla nel prompt dei comandi. usa sh <nome del file come mostrato sopra> .sh se richiede l'autorizzazione usa chmod + x /path/to/yourscript.sh o fai clic con il pulsante destro del mouse e modifica l'autorizzazione in tutto
Durgesh Kumar

24

necessario

Prima di poter eseguire il file .sh, è necessario renderlo eseguibile:

  1. Fare clic con il tasto destro sul file
  2. Seleziona Proprietà
  3. Seleziona Autorizzazioni
  4. Selezionare Consenti esecuzione file come programma

avvertimento

Assicurati di fidarti della fonte da cui hai ottenuto il file. Potrebbe essere un virus .

Il modo molto semplice

  1. Fare doppio clic sul file
  2. Fare clic su Esegui nel terminale

Questo ha un problema. Il terminale si chiuderà immediatamente e non sarà possibile vedere l'output.

Il modo semplice

  1. Apri Applicazioni -> Accessori -> Terminale
  2. Trascina e rilascia il file .sh nel terminale e premi Invio

Il modo in cui i professionisti lo fanno

  1. Apri Applicazioni -> Accessori -> Terminale
  2. Trova dove il file .sh

    • Utilizzare i comandi lsecd
    • lselencherà i file e le cartelle nella cartella corrente . Provalo: digita "ls" e premi Invio.
    • Quando vedi la cartella in cui vuoi andare, esegui cd, seguito da uno spazio, seguito da un nome di cartella
    • Se si, quando in una cartella che non volevi, eseguire cd ..andare un livello alto
  3. Esegui il file .sh

    • Una volta che si può vedere, per esempio script1.shcon lsrun questo:

      ./script.sh

Perché farlo nel modo complicato?

Il terminale ha un ricco set di potenti strumenti accessibili digitando i comandi. I professionisti individuano il file .sh digitando lse cd. Una volta che sei nella cartella corrente corretta puoi eseguire lo script in questo modo:

./script1.sh

oppure puoi eseguire e reindirizzare l'output su un file:

./script1.sh > out.txt

oppure puoi filtrare l'output per parole chiave (ad esempio "mele") e quindi reindirizzare a un file:

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

Ci sono migliaia di cose che puoi fare su quel file semplicemente digitando alcuni comandi.

Un altro, è possibile scaricare un file da Internet con un semplice comando:

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

E quindi apri il file in questo modo:

shotwell ps_logo2.png

6
Non sono sicuro che i professionisti modo lo fanno è corretto, è più un caso di modo semplice l' avanzata (per per il controllo della produzione) modo
Hailwood

È bello sapere che l'ho fatto nel modo in cui i professionisti lo fanno durante la mia prima prova. Ho pensato che fosse il modo di base dell'utente.
Nelson, l'

19

Su Ubuntu 13.04 i file eseguibili aperti in Nautilus sono ora aperti in gedit per impostazione predefinita anziché richiedere all'utente di eseguirli. Per abilitare il comportamento classico è necessario regolare le preferenze:

Nautilus → menu Modifica → Preferenze → scheda Comportamento → Fai clic sul pulsante di opzione vicino a Chiedi ogni volta.


La persona che ha posto la domanda parla di Ubuntu 10.10
edwin l'

1
Grazie!!! Non so perché lo cambino, non riesco a capire come eseguire qualcosa.
Aprire il

1
Questa è la risposta giusta per l'ultimo ubuntus.
gaRex,

Come si arriva a Nautilus nel 15.10?
Yaakov Ainspan,

A partire da Ubuntu 18.04, puoi accedere alle preferenze aprendo una directory e facendo clic su "File -> Preferenze" nella barra in alto.
tparker,

7

Vai alla directory in cui si trova il .shfile utilizzando cd. In questo esempio ho archiviato il mio shfile come~/Desktop/shell_practice/test.sh

prima fai pwdper capire dove sei, e se ritorna /home/username(dov'è il usernametuo vero nome utente), puoi correre

cd Desktop/shell/practice

Se sembri essere altrove, puoi usare il percorso assoluto

cd ~/Desktop/shell/practice

o

cd $HOME/Desktop/shell/practice

o anche

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

questi sono tutti modi per descrivere lo stesso posto. Dopo aver raggiunto la posizione del tuo script, digita

ls

Se riesci a vedere il shfile nell'output, puoi usarlo chmodper renderlo eseguibile. Nel mio caso, ricorda, il nome del file è test.sh, quindi vorrei eseguire

chmod u+x test.sh

Ora che siamo nella stessa directory dello script, dobbiamo specificare alla shell che vogliamo eseguire il file specificandone la posizione ./(la directory corrente seguita da un separatore di percorso, per distinguerlo dal nome del file). Per eseguire il mio file, digitare:

./test.sh

Se lo script è stato scritto correttamente, verrà eseguito senza errori ...

Ecco un esempio dal vivo: Ecco un esempio dal vivo


Questo ha funzionato per me per installare Netbeans su Ubuntu
RuD3B0y

1
Wb, @ RuD3B0y, ho cercato di mantenere le risposte migliori per noobs, nessun contenuto ad alta tecnologia, se hai qualche modifica sei il benvenuto.
TheExorcist,

4

2 passaggi principali.

  1. nel terminale, usa gedit per scrivere e salvare lo script con estensione ".sh" sul desktop. (ma è possibile utilizzare qualsiasi editor di testo)

  2. apri Nautilus e fai clic con il pulsante destro del mouse sul file script.sh.

    • nelle proprietà, selezionare la casella di controllo "consenti l'esecuzione del file .."

    • nel menu Nautilus, fare clic su file, quindi preferenze, quindi comportamento

    • controlla "esegui file di testo eseguibili quando vengono aperti".

Ora, quando fai doppio clic sul file sul desktop, dovrebbe essere eseguito. non c'è bisogno di .o./


3
  1. Fare clic con il tasto destro del mouse sul .shfile e renderlo eseguibile.

  2. Apri un terminale ( Ctrl+ Alt+ T).

  3. Trascina il .shfile nella finestra del terminale e osserva in soggezione.


1
Benvenuti in Ask Ubuntu! Consiglio di modificare questa risposta per espanderla con dettagli specifici su come eseguire il primo passaggio. (Vedi anche Come posso scrivere una buona risposta? Per consigli generali su quali tipi di risposte sono considerate più preziose su AskUbuntu.)
David Foerster,

3

Ci sono alcuni modi per farlo.

opzione 1

  1. Nel terminale, accedi alla directory in cui si trova il file Bash cd(cambia directory).

    Ex. cd Downloads

  2. Correre bash <filename>.sh

    Questo funziona anche con file .run. C'è un esempio di questo utilizzo in questa pagina web sull'aggiornamento di Rhythmbox.

opzione 2

  1. Nel terminale, vai alla directory in cui si trova il file bash.

  2. Correre chmod +x <filename>.sh

  3. In Nautilus, apri il file.


3

Per Ubuntu 18.04 , c'è una piccola modifica, in quanto non si ottiene una finestra di dialogo pop-up.

Quindi quello che devi fare è:

Fare clic con il tasto destro su File, selezionare Preferenze> Seleziona scheda Comportamento> Contrassegna l'opzione "Chiedi cosa fare" in File di testo eseguibile.

Ora, quando fai doppio clic su qualsiasi file .sh, otterrai un popup, lì puoi selezionare l'opzione "esegui nel terminale" per eseguire il tuo file .sh.

inserisci qui la descrizione dell'immagine


2

In Ubuntu 16.04 ecco come aprirlo nel Terminale:

Vai a File Manager > Edit > Preferences > Behaviorper Executable Text Filese seleziona Ask each time.

Il problema è che è impostato di default su View Executable Files when they are opened.


1

Se inserisci lo script della shell o altro eseguibile che crei in / usr / local / bin, questo verrà trovato ed eseguito senza dover fornire un percorso di cartella nella riga di comando o aggiungendo ./ al nome. Ad esempio, ho creato il seguente semplice script bash a 3 righe per visualizzare gli UUID del disco:

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

Ho chiamato il file uuid e l'ho inserito in / usr / local / bin. Tutto quello che devo inserire sulla riga di comando è:

uuid

0

Bene, anch'io ho affrontato lo stesso problema. Volevo eseguire il file .sh e si è aperto con Gedit su CentOS 7. Quindi ecco cosa ho fatto:

  1. Sono passato al percorso del .shfile che volevo eseguire.
  2. Ho aperto il terminale.
  3. E ho semplicemente trascinato e rilasciato la finestra del terminale e ha preso automaticamente quel file insieme al percorso come input.
  4. Premi Invio e sei a posto!

0

Il problema che ho riscontrato in alcune distribuzioni è che hanno nascosto l'opzione delle preferenze in Nautilus, ma correggerlo in Ubuntu e altre distribuzioni usando Gnome3 è lo stesso (letteralmente ho appena fatto la versione Fedora di questo e postando la correzione effettiva per ricordarmi di me come in futuro).

  1. Installare dconf-editor

    sudo apt-get install dconf-editor
  2. Esegui dconf-editorutilizzando l'account utente su cui desideri questo, ovvero NON root

    dconf-editor
  3. Passa al seguente schema:

    org.gnome.nautilus.preferences

  4. Modifica l'opzione predefinita per non aprirla per impostazione predefinita:

    Trova executable-text-activationfai clic sulla parola displaye cambia inask

che ti darà la possibilità di modificare, visualizzare o eseguire il file in futuro


0

Sono un noob in Linux e ho avuto lo stesso problema. Se tutti gli altri falliscono:

  1. Terminale aperto
  2. Apri la cartella contenente il file .sh
  3. Trascina e rilascia il file nella finestra del terminale
  4. Il percorso del file appare nel terminale. Press Enter.
  5. Voila, il tuo file .sh viene eseguito.

-2

Puoi anche usare i .trucchi, con il suggerimento di altre risposte.

Per esempio:

chmod +x filename.sh, supponendo che tu sia già passato al percorso del file, quindi esegui il file con uno di questi comandi:

sh filename.sh

./filename.sh

. filename.sh

2
attenzione : questi tre comandi non sono equivalenti. Se il tuo shebang fa riferimento a un binario diverso (come Stack), il terzo comando proverà ad analizzare gli argomenti con Bash, il che fallirà.
Jezen Thomas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.