30Jul

Milloin on parempi käyttää #!/bin/ bash sijaan #!/bin/ sh Shell-komentosarjassa?

click fraud protection

Kun luot uuden komentosarjan, haluat varmistaa, että se on mahdollisimman ongelmaton, mutta joskus voi olla vähän sekava tietää, mikä on paras tapa käyttää.Tästä huomisesta nykypäivän SuperUser Q & A -postilla on vastaus hämmentynyt lukijan kysymykseen.

Päivän kysymys &Vastausistunto tulee meille kohteliaasti SuperUser-osastoon Stack Exchange, yhteisöllinen ryhmä Q & A verkkosivuilla.

Kysymys

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

Milloin sopivampi käyttää #!/bin/ bash sijaan #!/bin/ sh komentotiedostossa?

Milloin on parempi käyttää #!/bin/ bash sijasta #!/bin/ sh komentotiedostossa?

Vastaus

SuperUser-osallistujan grawity on meille vastaus:

Lyhyesti sanottuna:

  • POSIX sh -spesifikaation superset on useita. Eri 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ää
    instagram viewer
    #!/bin/ sh ja komentosarjan pitäisi toimia hyvin, riippumatta siitä, mikä shell se on.
  • Jos alat käyttää bash-spesifisiä ominaisuuksia( eli taulukkoja), sinun tulee nimenomaan pyytää bashta, koska /bin/ sh kutsuu jo bashin järjestelmäänsä, mutta se ei ehkä ole kaikkien muiden järjestelmässä.Sama koskee tietenkin zsh: tä ja ksh: ta.
  • Vaikka skripti olisi tarkoitettu vain henkilökohtaiseen käyttöön, saatat huomata, että jotkut käyttöjärjestelmät muuttavat /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 : tä.Vaikka env-työkalu itse ei ole tiukasti taattu, /usr/bin/ env toimii yhä useammilla järjestelmillä kuin /bin/ bash .

Onko sinulla jotain lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä?Katso koko keskusteluketju täältä.

Kuvamäärä: Wikipedia