Executarea fișierului bash cu Eroare bin / bash: interpret prost: Nu există un astfel de fișier sau director

Sunt foarte nou în bash și încerc să scriu primul script numit hello_world în calea /Users/me/Study/Linux cu conținutul scris de vim:

#! bin/bash echo Hello World 

Cu toate acestea, eroarea apare atunci când este executată:

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

Am citit multe întrebări despre această problemă, dar mă simt în continuare pierdut. 🙁 Voi fi foarte recunoscător pentru ajutorul dvs.

Comentarii

  • încercați #! /bin/bash pentru prima linie
  • @TedWrigley Thx, care funcționează; dar de ce?
  • Shebang (#!) ia o cale către un executabil, iar în Unix / linux, căile trebuie să înceapă cu o bară.

Răspuns

Prima linie a scriptului bash trebuie să arate astfel.

#!/bin/bash 

Aceasta se numește „linie shebang”, deoarece primele două caractere #! sunt un shebang . Linia shebang îi spune computerului ce program executabil ar trebui să fie folosit pentru a interpreta restul scriptului. În acest caz, scrieți un script bash, dar la fel de ușor puteți scrie un script pentru python sau awk și trebuie să spuneți sistemului ce interpret să folosească în funcție de limbajul în care este scris scriptul.

Motivul pentru care linia dvs. de shebang #! bin/bash nu funcționează este b deoarece nu ați furnizat o cale validă (de obicei, o cale absolută ) către interpret. Dacă omiteți linia inițială /, atunci shell-ul caută bin în directorul de lucru curent, dar nu îl găsește.

Deoarece abia ați început să învățați bash, vă sugerez să citiți o carte. Acest lucru vă va scuti de nevoia de a pune prea multe întrebări. Învățarea bash Shell, ediția a III-a de Cameron Newham este destul de bună.

Comentarii

  • Rețineți că spațiul de după #! nu are importanță – #!/bin/bash și #! /bin/bash funcționează și #!bin/bash sau #! bin/bash va funcționa numai dacă cd / mai întâi (deci se găsește coșul de gunoi ). Din link-ul dvs. Wikipedia " Blanks after! sunt OK "

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *