Esecuzione del file bash con errore bin / bash: interprete errato: nessun file o directory di questo tipo

Sono molto nuovo a bash e prova a scrivere il primo script chiamato hello_world nel percorso di /Users/me/Study/Linux con il contenuto scritto da vim:

#! bin/bash echo Hello World 

Tuttavia, lerrore si verifica durante lesecuzione:

-bash: /Users/me/Study/Linux/hello_world: bin/bash: bad interpreter: No such file or directory 

Ho letto molte domande sul problema ma mi sento ancora totalmente perso. 🙁 Ti sarò molto grato per il tuo aiuto.

Commenti

  • prova #! /bin/bash per prima riga
  • @TedWrigley Thx, funziona; ma perché?
  • Lo shebang (#!) prende un percorso per un eseguibile, e in Unix / linux, i percorsi devono iniziare con una barra.

Risposta

La prima riga del tuo script bash deve essere simile a questa.

#!/bin/bash 

Questa è chiamata “riga shebang” perché i primi due caratteri #! sono shebang . La riga shebang dice al computer quale programma eseguibile dovrebbe essere usato per interpretare il resto dello script. In questo caso stai scrivendo uno script bash, ma potresti scrivere altrettanto facilmente un script per python o awk, e devi dire al sistema quale interprete usare in base alla lingua in cui è scritto lo script.

Il motivo per cui la tua riga shebang #! bin/bash non funziona è b perché non hai fornito un percorso valido (in genere, un percorso assoluto ) allinterprete. Se ometti la barra iniziale /, la shell cerca bin nella directory di lavoro corrente ma “non la trova.

Dato che hai appena iniziato a imparare bash, ti suggerisco di leggere un libro. Questo ti eviterà di dover fare troppe domande. Imparare la shell bash, 3a edizione di Cameron Newham è abbastanza buono.

Commenti

  • Tieni presente che lo spazio dopo #! non è importante: #!/bin/bash e #! /bin/bash entrambi work e #!bin/bash o #! bin/bash funzioneranno solo se cd / prima (quindi viene trovato bin ). Dal tuo link di Wikipedia " Vuoti dopo! sono OK "

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *