Kotisivu » miten » Milloin on parempi käyttää #! / Bin / bash -toimintoa Shell-skriptiin #! / Bin / sh n sijaan?

    Milloin on parempi käyttää #! / Bin / bash -toimintoa Shell-skriptiin #! / Bin / sh n sijaan?

    Kun luot uuden shell-komentosarjan, haluat varmistaa, että se on mahdollisimman ongelmaton, mutta joskus se voi olla hieman hämmentävää tietää, mikä shebang on paras käytettäväksi. Tässä muistiinpanossa nykypäivän SuperUser Q&A -postissa on vastaus sekavaan lukijakysymykseen.

    Nykypäivän Kysymys- ja vastaus -istunto tulee meille suotuisasti SuperUserin - Stack Exchange -alueen, yhteisöpohjaisen Q & A-sivustojen ryhmittymän - kautta..

    Kysymys

    SuperUser-lukija Hendre haluaa tietää, milloin on parempi käyttää #! / Bin / bash sijasta #! / Bin / sh shell-skripteissä:

    Milloin on sopivampaa käyttää #! / Bin / bash mielummin kuin #! / Bin / sh komentosarjassa?

    Milloin on parempi käyttää #! / Bin / bash sijasta #! / Bin / sh komentosarjassa?

    Vastaus

    SuperUserin tekijän raskaus on meille vastaus:

    Lyhyesti:

    • On olemassa useita kuoret, jotka toteuttavat POSIX sh -määrityksen supersetin. Eri järjestelmissä, / Bin / sh voi olla linkki tuhkaan, bashiin, viivaan, ksh: hen, zsh: iin jne. Se on kuitenkin aina sh-yhteensopiva, ei koskaan csh tai kala.
    • Niin kauan kuin pidät vain sh-ominaisuuksia, voit (ja luultavasti jopa olla) käyttää #! / Bin / sh ja käsikirjoituksen pitäisi toimia hyvin, riippumatta siitä, mikä kuori on.
    • Jos käytät bash-spesifisiä ominaisuuksia (eli matriiseja), sinun on erityisesti pyydettävä bashia, koska vaikka / Bin / sh jo kutsuu bash-järjestelmääsi, se ei välttämättä näy kaikkien muiden järjestelmissä, eikä skriptiä näy siellä. Sama pätee tietenkin zsh ja ksh.
    • Vaikka skripti on tarkoitettu vain henkilökohtaiseen käyttöön, saatat huomata, että jotkin käyttöjärjestelmät muuttuvat / Bin / sh päivitysten aikana. Esimerkiksi Debianissa se oli aiemmin bash, mutta korvattiin myöhemmin hyvin pienellä viivalla. Skriptit, joissa käytettiin bashismia, mutta joilla oli #! / Bin / sh yhtäkkiä rikkoi.

    Kuitenkin:

    • Jopa #! / Bin / bash ei ole oikea. Eri järjestelmissä bash voi elää / Usr / bin, / Usr / pkg / bin, tai / Usr / local / bin.
    • Luotettavampi vaihtoehto on #! / usr / bin / env bash, joka käyttää $ PATH. Vaikka env-työkalu ei myöskään ole tiukasti taattu, / Usr / bin / env toimii edelleen useammassa järjestelmässä kuin / Bin / bash tekee.

    Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.

    Kuvaluotto: Wikipedia