Bash fájl végrehajtása a bin / bash hibával: hibás tolmács: Nincs ilyen fájl vagy könyvtár

Nagyon új vagyok a bash-ban, és megpróbálom megírni az első hello_world a /Users/me/Study/Linux útvonalán a vim által írt tartalommal:

#! bin/bash echo Hello World 

A hiba azonban végrehajtáskor következik be:

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

Sok kérdést olvastam a kérdésben, de még mindig teljesen elveszettnek érzem magam. 🙁 Nagyon hálás leszek a segítségedért.

Megjegyzések

  • próbáld ki #! /bin/bash első sor
  • @TedWrigley Thx, ez működik; de miért?
  • A shebang (#!) utat mutat egy futtatható fájlhoz, a Unix / linux-ban pedig az utakat el kell kezdeni perjel.

Válasz

A bash szkript első sorának így kell kinéznie.

#!/bin/bash 

Ezt “shebang-sornak” hívják, mert az első két karakter #! shebang . A shebang sor megmondja a számítógépnek, hogy mely futtatható programot kell használni a szkript többi részének értelmezéséhez. Ebben az esetben írsz egy bash szkriptet, de ugyanolyan könnyen írhatsz egy szkript a pythonhoz vagy az awk-hoz, és meg kell mondania a rendszernek, hogy melyik tolmácsot használja, annak alapján, hogy a szkript milyen nyelven van írva.

Az oka, hogy a shebang sora #! bin/bash nem működik a b mert nem adott meg érvényes értelmezési utat (általában egy abszolút utat ) a tolmácshoz. Ha kihagyja a kezdeti perjelet /, akkor a héj a bin elemet keresi az aktuális munkakönyvtárban, de nem találja meg.

Mivel csak most kezded el a bash-t tanulni, ezért javaslom elolvasni egy könyvet. Ez megment minket attól, hogy túl sok kérdést kelljen feltennie. Cameron Newham bash Shell 3. kiadásának elsajátítása nagyon jó.

Hozzászólások

  • Ne feledje, hogy a #! utáni szóköz nem fontos – #!/bin/bash és #! /bin/bash egyaránt a work és a #!bin/bash vagy a #! bin/bash csak akkor fog működni, ha először cd / (tehát a bin található ). Wikipedia linkedből " Üres után! rendben vannak "

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük