If-Koubou

Milloin on parempi käyttää #! / Bin / bash Shell-komentosarjan #! / Bin / sh sijasta?

Milloin on parempi käyttää #! / Bin / bash Shell-komentosarjan #! / Bin / sh sijasta? (Miten)

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.

Kysymys

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?

Vastaus

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