Come posso eseguire un file .sh o .command in Terminal


87

Ho sempre desiderato poter eseguire uno script scaricato online direttamente dal Finder, ma il doppio clic sul file non funziona.

Risposte:


103

Apri Terminale, digita sh /path/to/filee premi Invio.

È più veloce digitare she uno spazio, quindi trascinare il file nella finestra e rilasciare l'icona in qualsiasi punto della finestra.


3
Cosa pensi che accadrà se lo script della shell è scritto nella sintassi di un'altra shell, come tcsh, zsh o ksh? Il suffisso shindica uno script di shell non "esegui lo script in questa shell".
fd0,

3
@ fd0 La linea shebang se ne occuperà.
user14492

4
@ user14492- Quando si richiama uno script shell poiché shell shell_scriptla riga shebang viene ignorata. La shell legge la prima riga come commento.
fd0

@ fd0, non capisco. In che modo sh /path/to/filesemanticamente è diverso dall'alternativa /path/to/file.sh?
Pacerier,

2
@ Pacerier- Nel primo modulo, l'utente che invoca deve essere in grado di leggere il file e scegliere quale interprete leggerà il file. Nel secondo modulo, le autorizzazioni del file devono essere lette ed eseguite per l'utente che invoca e l'interprete è determinato dall'hash bang sulla prima riga dello script. In entrambi i casi il kernel non interpreta il suffisso nel file.
fd0,

12

In alternativa, potresti anche farlo

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

che eseguirà anche il file eseguibile con la shell specificata (se specificato nella shebang #!/bin/(shell)


1
Nella domanda dice "esegui uno script che ho scaricato online". I file scaricati da Internet di solito hanno autorizzazioni impostate su 644.
nohillside

@patrix penso che non sia solo internet, ma ogni file che viene copiato da un altro filesystem sul tuo a causa della maschera predefinita nel tuo account.
rwenz3l,

9
chmod u+x myfile.sh
cp myfile.sh /usr/local/bin

modifica ~/.bash_profilee aggiungi la seguente riga:

alias myfile=./myfile.sh

eseguire la seguente riga di comando:

source ~/.bash_profile

allora sarai in grado di eseguire il tuo file come programma

$ myfile


in Ubuntu qualsiasi script nel tuo percorso può essere eseguito per tutto il tempo che hai #~/bin/sh, mentre nello OSXscript dovrebbe avere .shestensione e un aliasper ognuno di essi. : -O
Fabrizio Bertoglio il

6

Seguire questi passaggi per eseguire i file di script:

  1. Fare clic con il tasto destro sul file .sh.

  2. Passa il mouse sopra Apri con .

  3. Scegli Altro ... .

  4. Dovresti essere nella cartella Applicazioni . Apri la cartella Utilità e seleziona Terminal.app.

  5. Se non riesci a selezionare Terminal.app, modifica le applicazioni abilitate da Applicazioni consigliate a Tutte le applicazioni . È nella parte inferiore della finestra.

  6. Se vuoi aprire tutti i .shfile con Terminal.app, seleziona Apri sempre con .

  7. Premi il pulsante Apri nell'angolo in basso a destra della finestra.


3

Il motivo per cui non funziona dopo il download è che le autorizzazioni del file non lo consentono. Per abilitare le autorizzazioni di esecuzione, aprire Terminale e digitare chmod 755 /path/to/script. Invece di digitare il percorso completo, puoi trascinare lo script nella finestra Terminale dal Finder. Quindi, per eseguire, basta inserire /path/to/script. Ancora una volta, è possibile trascinare e rilasciare il file nella finestra Terminale. Questa sintassi dovrebbe eseguire lo script usando la shell corretta come definito nella prima riga dello script.


Il mio file .sh si apre nell'editor di testo con cui ho creato il file. Come posso invece aprirlo in Terminale? Ho impostato le autorizzazioni giuste.
Bart il

@bart devi aggiungere l'estensione .command per eseguire direttamente uno script nel finder.
rwenz3l,
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.