If-Koubou

Kada je bolje koristiti #! / Bin / bash Umjesto #! / Bin / sh u shematskoj skripti?

Kada je bolje koristiti #! / Bin / bash Umjesto #! / Bin / sh u shematskoj skripti? (Kako da)

Kada stvarate novu skriptu ljuske, želite biti sigurni da je problem što je više moguće problematičan, ali ponekad može biti pomalo zbunjujuće da biste znali koji je najbolji način za korištenje. Na toj napomenici, današnji SuperUser Q & A post ima odgovor na pitanje zbunjenog čitatelja.

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Pitanje

Čitač SuperUser Hendre želi znati kada je bolje koristiti #! / Bin / bash umjesto #! / Bin / sh u skriptama ljuske:

Kada je prikladnije koristiti #! / Bin / bash rađe nego #! / Bin / sh u skriptu ljuske?

Kada je bolje koristiti #! / Bin / bash umjesto #! / Bin / sh u skriptu ljuske?

Odgovor

Odgovor za nas je odgovoran za SuperUser suradnik:

Ukratko:

  • Postoji nekoliko školjki koje implementiraju superset POSIX sh specifikacije. Na različitim sustavima, / Bin / sh može biti veza s pepelom, bashom, crticom, ksh, zsh, itd. Uvijek će biti sh-kompatibilan ipak, nikada csh ili ribe.
  • Sve dok se zanimate samo za sh značajke, možete (i vjerojatno čak trebati) koristiti #! / Bin / sh i skripta bi trebala funkcionirati, bez obzira na to koja je ljuska.
  • Ako počnete koristiti značajke specifične za bash (tj. Polja), trebali biste posebno tražiti bash jer, čak i ako / Bin / sh već se zove bash na vašem sustavu, možda ne i na sustavu sviju, a vaša skripta neće se odvijati tamo. Isto vrijedi i za zsh i ksh, naravno.
  • Čak i ako je skripta samo za osobnu upotrebu, možda ćete primijetiti da se neki operacijski sustavi mijenjaju / Bin / sh tijekom nadogradnje. Na primjer, na Debianu se nekad nalazila bash, no kasnije je zamijenjena minimalnom crticom. Skripte koje su koristile bashizme, ali su imale #! / Bin / sh iznenada je razbio.

Međutim:

  • Čak #! / Bin / bash nije to točno. Na različitim sustavima bash može živjeti / Usr / bin, / Usr / PKG / bin, ili / Usr / local / bin.
  • Pouzdanija je mogućnost #! / usr / bin / env bash, koji koristi $ PATH, Iako sama env alat nije strogo zajamčena, / Usr / bin / ENV još radi na više sustava nego / Bin / bash ne.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.

Slikovni kredit: Wikipedia