Kad tas ir labāk izmantot #! / Bin / bash Vietā #! / Bin / sh Shell Script?
Ja veidojat jaunu čaulu skriptu, jūs vēlaties pārliecināties, ka tas ir pēc iespējas brīvāks, bet dažreiz tas var būt mazliet mulsinoši zināt, kura Shebang ir labākā, lai jūs varētu to izmantot. Šajā piezīmē šodienas SuperUser Q&A postenim ir atbilde uz neskaidru lasītāja jautājumu.
Šodienas jautājumu un atbilžu sesija mums dod pieklājību no SuperUser-Stack Exchange apakšnodaļas, kas ir kopienas orientēta Q & A tīmekļa vietņu grupa.
Jautājums
SuperUser lasītājs Hendre vēlas uzzināt, kad ir labāk izmantot #! / bin / bash tā vietā #! / bin / sh čaulu skriptos:
Kad tas ir lietderīgāk izmantot #! / bin / bash nevis #! / bin / sh čaulas skriptu?
Kad tas ir labāk izmantot #! / bin / bash tā vietā #! / bin / sh čaulas skriptu?
Atbilde
SuperUser ieguldītāja grawity ir atbilde mums:
Īsumā:
- Pastāv vairāki apvalki, kas ievieš POSIX sh specifikācijas superset. Dažādās sistēmās, / bin / sh varētu būt saite uz pelnu, bash, domuzīmi, ksh, zsh utt..
- Kamēr jūs pieturaties pie tikai funkcijām, varat (un, iespējams, pat vajadzētu) izmantot #! / bin / sh un skriptam ir jādarbojas labi, neatkarīgi no tā, kurš apvalks ir.
- Ja sākat lietot bash specifiskas funkcijas (t.i., masīvus), jums ir īpaši jāpieprasa bash, jo, pat ja / bin / sh jau sāk bash uz jūsu sistēmas, tas, iespējams, nebūs visu citu sistēmā, un jūsu skripts nedarbosies tur. Tas pats attiecas uz zsh un ksh, protams.
- Pat ja skripts ir paredzēts tikai personiskai lietošanai, var gadīties, ka dažas operētājsistēmas mainās / bin / sh jaunināšanas laikā. Piemēram, Debianā tā agrāk bija bash, bet vēlāk tika aizstāta ar ļoti minimālo domuzīmi. Skripti, kas izmantoja bashismus, bet bija #! / bin / sh pēkšņi lauza.
Tomēr:
- Pat #! / bin / bash tas nav pareizi. Dažādās sistēmās bash varētu dzīvot / usr / bin, / usr / pkg / bin, vai / usr / local / bin.
- Drošāka izvēle ir #! / usr / bin / env bash, kas izmanto $ PATH. Lai gan pats env rīks nav stingri garantēts, / usr / bin / env joprojām darbojas vairākās sistēmās nekā / bin / bash tas notiek.
Vai kaut kas jāpievieno paskaidrojumam? Skaņas izslēgšana komentāros. Vai vēlaties lasīt vairāk atbildes no citiem tehnoloģiju gudriem Stack Exchange lietotājiem? Apskatiet pilnu diskusiju pavedienu šeit.
Attēla kredīts: Wikipedia