Kun luot uuden komentosarjan, haluat varmistaa, että se on mahdollisimman ongelmaton, mutta joskus voi olla vähän hämmentävää tietää, mikä on paras käytettäväksi. Tästä huomisesta tänään SuperUser Q & A -postilla on vastaus hämmentynyt lukijan kysymykseen.
Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.
SuperUser-lukija Hendre haluaa tietää, milloin se on parempi käyttää #! / Bin / bash sijasta #! / Bin / sh komentosarjoissa:
Milloin on tarkoituksenmukaisempaa käyttää sitä #! / Bin / bash mielummin kuin #! / Bin / sh komentotiedostossa?
Milloin on parempi käyttää #! / Bin / bash sijasta #! / Bin / sh komentotiedostossa?
SuperUser-avustajan grawity on meille vastaus:
Lyhyesti:
- On olemassa useita kuoreita, jotka toteuttavat POSIX sh -spesifikaation supersetin. Erilaisissa järjestelmissä, / Bin / sh voi olla linkki tuhka, bash, dash, ksh, zsh, jne. Se on aina sh-yhteensopiva, ei kuitenkaan csh tai kalaa.
- Niin kauan kuin pidät vain sh-ominaisuuksista, voit (ja luultavasti jopa) käyttää sitä #! / Bin / sh ja käsikirjoituksen pitäisi toimia hyvin, riippumatta siitä, mikä kuori se on.
- Jos aloitat bash-spesifisten ominaisuuksien käyttämisen (eli taulukot), sinun tulee nimenomaan pyytää bash, koska vaikka / Bin / sh jo kutsuu bash-järjestelmääsi, se ei välttämättä ole kaikkien muiden järjestelmässä, eikä komentossasi ole siellä. Sama koskee tietenkin zsh: tä ja ksh: ta.
- Vaikka skripti olisi vain henkilökohtaiseen käyttöön, saatat huomata, että jotkut käyttöjärjestelmät muuttuvat / Bin / sh päivitysten aikana. Esimerkiksi Debianilla se oli aikaisemmin bash, mutta myöhemmin se korvattiin hyvin pienellä viivalla. Scripts, jotka käyttivät bashisms mutta oli #! / Bin / sh yhtäkkiä rikkoi.
Kuitenkin:
- Jopa #! / Bin / bash ei ole niin oikea. Erilaisissa järjestelmissä bash voi elää / Usr / bin, / Usr / pkg / bin, tai / Usr / local / bin.
- Luotettava vaihtoehto on #! / usr / bin / env bash, joka käyttää $ PATH. Vaikka itse env-työkalu ei ole tiukasti taattu, / Usr / bin / env toimii yhä useammissa järjestelmissä kuin / Bin / bash tekee.
Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.
Kuvauskenttä: Wikipedia