Ovatko dash-, ash- ja sh-skriptit 100% yhteensopivia?

Halusin tietää, ovatko viivalle, tuhkalle ja sh: lle kirjoitetut komentosarjat 100% yhteensopivia?

Onko laitteeseen lisätty ominaisuuksia viiva tai tuhka tai syntaksimuutos?

Kuulemani mukaan ash on sh: n suora jälkeläinen.

Kommentit

  • tuhka on raidallinen alaspäin muotoinen bash
  • lähde? En nähnyt mitään, joka sanoi, että tuhka liittyy bashiin
  • Miksi ' t ihmiset vain lähettävät korjaustiedostoja bashille kaikenlaisten kuorien luomisen sijaan, se puhkaisee minua koko ajan. Jos todella haluat tietää, lue käyttöopas, esim. man ash
  • Oikea, se ' ei ole jälkeläinen lyödä. Olisi tarkempaa sanoa, että he ' ovat jälkeläisiä sh: stä (alkuperäinen Bourne-kuori), mutta että ' eivät myöskään ole täysin oikeita .
  • Voit tarkistaa apuohjelman checkbashisms avulla, että komentosarjasi on POSIX-yhteensopiva.

vastaus

Lyhyt vastaus on ei, he ”eivät ole 100% yhteensopivia.

Mutta suurin osa kuoreista on melko lähellä perusasioita, joten törmäät vain harvoin epäjohdonmukaisuuksiin. useimmat kuoret eroavat toisistaan vain lisättävän syntaksin, mutta joidenkin lisäominaisuuksien, kuten välilehtien täydentämisen ja vastaavien, suhteen.

Myös dash on eräänlainen ash — tai portti BSD: stä Linuxiin, tarkemmin sanottuna. Ja heidän kaikkien tulisi olla . Itse asiassa sh on useimmissa järjestelmissä vain symlinkki bash, dash tai johonkin muuhun. Tärkeää on POSIX-yhteensopivuus — ja kun kirjoitat komentosarjoja standardien mukaisesti, et törmää ongelmiin.

Näiden kuorien ero on optimoinnissa. Ne ovat vähemmän ominaisuuksiltaan rikkaita kuin bash, mutta ne ovat täysin oikeutettuja kuoria. Bash on monipuolinen interaktiiviseen työhön, mutta käyttää esimerkiksi enemmän muistia.

Kommentit

  • Mutta komentosarjojen käyttöä varten ne ovat yhteensopivia?
  • POSIX-yhteensopivuudesta, vaikka noudatan kyseistä standardia, jos skripti kirjoitetaan Bashille, en usko, että se toimii millä tahansa sh: llä tai sen jälkeläisillä
  • Niiden tulisi olla yhteensopivia toistensa kanssa, jos ' et käytä joitain epäselviä ominaisuuksia. Mutta jos käytät bash-komentosarjaa, saatat kohdata enemmän ongelmia.
  • koskaan aikonut käyttää bashia sh: n, tuhkan tai viivan kanssa. Mitkä ovat nämä hämärät ominaisuudet?
  • monet bash ': n uudemmista ominaisuuksista ovat lisäyksiä POSIX: n yli, joten on todennäköisempää, että kirjoitat ei-kannettavan koodin, jos ' käytä niitä uudelleen. IIRC, edes [[]] -rakenne ei ole sh. Varo myös, että jos ' ei kirjoita puhdasta komentosarjakomentosarjaa, myös työkaluerot tulevat esiin (eri versiot sedistä, grepistä, awkista …).

vastaus

On syytä mainita, että joissakin järjestelmissä, etenkin Debianissa, / bin / ash ei ole käytettävissä:

$ type ash dash bash: type: ash: not found dash is /bin/dash 

kommentit

  • Heillä voi olla busybox-tuhkaa.
  • Tästä huolimatta on olemassa monia järjestelmiä, joilla ei ' ole bash.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *