Când creați un nou script de shell, doriți să vă asigurați că este cât mai gratuit posibil, dar uneori poate fi puțin confuz să știți care este cel mai bun shebang pentru tine de folosit. În această notă, postul de astăzi SuperUser Q & A are răspunsul la o întrebare confuză a cititorului.
Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor Q & A.
Cititorul super-utilizator Hendre dorește să știe când este mai bine să o folosească #! / Bin / bash in loc de #! / Bin / sh în scripturile shell:
Când este mai adecvat să se folosească #! / Bin / bash Decat #! / Bin / sh într-un script shell?
Când este mai bine să o folosiți #! / Bin / bash in loc de #! / Bin / sh într-un script shell?
Suprauperatorul contributor grawity are răspunsul pentru noi:
Pe scurt:
- Există mai multe cochilii care implementează o superset a specificației POSIX sh. Pe sisteme diferite, / Bin / sh ar putea fi o legătură la cenușă, bash, dash, ksh, zsh, etc. Totuși, va fi întotdeauna compatibil cu sh-ul, niciodată csh sau pește.
- Atâta timp cât rămâi doar la funcțiile sh, poți (și probabil chiar ar trebui) să le folosești #! / Bin / sh iar scenariul ar trebui să funcționeze bine, indiferent de coajă.
- Dacă începeți să utilizați funcții specifice bash (adică tablouri), ar trebui să solicitați în mod special bash deoarece, chiar dacă / Bin / sh deja se invocă bash pe sistemul dvs., s-ar putea să nu pe sistemul tuturor celorlalți și script-ul dvs. nu va rula acolo. Același lucru este valabil și pentru zsh și ksh, desigur.
- Chiar dacă scriptul este numai pentru uz personal, este posibil să observați că anumite sisteme de operare se modifică / Bin / sh în timpul actualizărilor. De exemplu, pe Debian a fost bash, dar ulterior a fost înlocuit cu linia foarte minimă. Scripturi care au folosit bashism, dar au avut #! / Bin / sh brusc sa rupt.
In orice caz:
- Chiar #! / Bin / bash nu este corect. Pe sisteme diferite, bash ar putea trăi / Usr / bin, / Usr / PKG / bin, sau / / Local / bin usr.
- O opțiune mai fiabilă este #! / usr / bin / env bash, care utilizează $ PATH. Deși instrumentul env în sine nu este strict garantat, / Usr / bin / env încă funcționează pe mai multe sisteme decât / Bin / bash face.
Aveți ceva de adăugat la explicație? Sunați în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.
Credit de imagine: Wikipedia