Uutisen kanssa, että Catalina käyttää oletusasetuksena Zsh: ää Bashin sijasta , I ”m Löydän paljon tuloksia, jotka kertovat minulle kytkimestä ja että se saattaa aiheuttaa ongelmia komentosarjojen komentosarjojen kanssa, mutta en ole tarpeeksi perehtynyt Zsh: ään tietämään, mitä nämä ongelmat saattavat olla. se on monimutkaista, mutta olen koskaan käyttänyt Bashia vain macOS: issa ja Linuxissa – kokemusta Zsh: stä ei ole. Voisiko kukaan tarjota yksinkertaisen käytännön vertailun tai erityisiä kompastuskiviä, jotka minun on tiedettävä, jotta voin alkaa työskennellä valmiina uusi kuori, kun Catalina julkaistaan?
Kommentit
vastaus
Ensinnäkin joitain tärkeitä asioita:
- Bash ei mene pois . Jos käytät jo bashia, mikään ei muutu sinulle. Ainoa muutos on, että zsh on oletus kirjautumiskuori uudille tileille, ja silloinkin voit valita sen sijaan bash.
- Skriptit eivät vaikuta . Mitä muutoksia on vuorovaikutteiseen käyttöön tarkoitettu kuori, ts. Päätelaitteiden kuori (ja myös muutama muu sisäänkirjautumista käyttävä asia, kuten crontabs). Jos sinulla on komentosarja tiedostossa, jolla on suoritusoikeudet, aloitetaan shebang-rivillä , kuten
#!/bin/bash
tai#!/bin/sh
tai#!/usr/bin/env bash
, se ”toimii edelleen täsmälleen kuten aiemmin. - Zsh: n syntaksia ei voida täysin käyttää bashissa , mutta se on lähellä. Monet koodit jatkavat toimintaansa, esimerkiksi tyypilliset aliakset ja toiminnot. Tärkeimmät erot ovat interaktiivisissa määritysominaisuuksissa.
Oletetaan, että harkitset vaihtamista zsh-tiedostoon, mikä on ollut mahdollista jo vuosia, tässä ovat tärkeimmät erot, joita kohtaat. Tämä ei ole tyhjentävä luettelo!
Tärkeimmät erot vuorovaikutteisessa käytössä
Määritystiedostot : bash lukee (pääasiassa) .bashrc
ei-sisäänkirjautuvissa interaktiivisissa kuoreissa (mutta macOS käynnistää sisäänkirjautumiskuoren oletusarvoisesti päätelaitteissa), .profile
tai sisäänkirjautumisen kuoreissa ja .inputrc
. Zsh lukee (pääasiassa) .zshrc
(kaikissa interaktiivisissa kuoreissa) ja .zprofile
(sisäänkirjautumisen kuoreissa). Tämä tarkoittaa, että mikään bash-mukautuksistasi ei ole voimassa: sinun on siirrettävä ne. Et voi vain kopioida tiedostoja, koska monia asioita on muokattava.
Avainsidonnat käyttävät täysin erilaista syntaksia. Bash käyttää .inputrc
ja sisäänrakennettua bind
sisäänrakennettua liitettäessä avaimet readline-komennot . Zsh käyttää sisäänrakennettua bindkey
sisäistä avainta zle -widgeteihin. . Useimmilla readline-komennoilla on zsh-ekvivalentti, mutta se ei ole aina täydellinen vastaavuus.
Avainsidonnasta puhuen, jos käytät Vi (m): tä pääteeditorina, mutta et komentorivimoodina kuoressa, huomaat, että zsh: n oletusasetuksena on vi muokkaustila, jos EDITOR
tai VISUAL
on asetettu arvoon vi
tai vim
. bindkey -e
siirtyy emacs-tilaan.
Kysy : bash asettaa kehotteen (pääasiassa) arvosta PS1
, joka sisältää taaksepäin viiva poistuu . Zsh asettaa kehotteen pääasiassa PS1
, joka sisältää prosenttia pakenee . Bash” s PROMPT_COMMAND
-toiminnot ovat käytettävissä zsh precmd
ja koukkutoiminnot . Zsh: llä on enemmän mukavuusmekanismeja fancy-kehotteiden luomiseen, mukaan lukien -kehoteemekanismi .
Perus komentorivihistoria -mekanismit (navigointi ylös / alas , haku Ctrl + R , historialaajennus !!
ja ystävät, viimeinen argumenttihaku Alt + . tai $_
) toimivat samalla tavalla, mutta yksityiskohdissa on paljon eroja, liian monta tässä lueteltavaksi. Voit kopioida .bash_history
tiedostoon .zsh_history
, jos et ole muuttanut tiedostomuotoa muuttavaa komentotulkkivaihtoehtoa.
Viimeistely : molemmat kuoret ovat oletusarvoisesti peruskomennotilassa, joka täydentää enimmäkseen komentojen ja tiedostojen nimiä, ja vaihtavat fancy-tilaan mukaan lukien bash_completion
bashilla tai suorittamalla compinit
zsh: ssä. Löydät joitain komentoja, jotka bash hoitaa paremmin ja toisia, joita zsh käsittelee paremmin. Zsh on yleensä tarkempi, mutta joskus luopuu siitä, missä bash tekee jotain, mikä ei ole oikein, mutta on järkevää. Komennon mahdollisten täydennysten määrittämiseksi zsh: llä on kolme mekanismia:
- ”vanha” täydennysmekanismi, jossa
compctl
ja jonka voit unohtaa. - ” uusi ”täydennysmekanismi, jossa
compadd
ja paljon toimintoja, jotka alkavat alaviivalla ja tehokas mutta monimutkainen käyttäjän määritysmekanismi . - -emulointi tukee bash-suoritustoimintoja , jotka voit ottaa käyttöön suorittamalla
bashcompinit
. Emulointi ei ole 100% täydellinen, mutta se toimii yleensä.
Monilla bash ”s shopt
-asetuksilla on vastaava setopt
tiedostossa zsh.
Zsh doe sn ”t käsittele #
kommenttialustana komentoriviltä oletusarvoisesti vain komentosarjoissa (mukaan lukien .zshrc
ja vastaavat). Ota vuorovaikutteiset kommentit käyttöön suorittamalla setopt interactive_comments
.
Tärkeimmät erot komentosarjoille
(ja tietysti komentorivillä oleville tehokäyttäjille)
Bashissa $foo
ottaa arvon foo
, jakaa sen välilyönteihin ja korvaa kuvion vastaavuuksien luettelolla jokaiselle välilyönnillä erotetulle osalle, jos se sisältää jokerimerkkejä ja vastaa olemassa olevaa tiedostoa. Saadaksesi vain arvon foo
, tarvitset "$foo"
. Sama koskee komentojen korvaamista $(foo)
. Zsh: ssä $foo
on arvon foo
arvo ja $(foo)
on osion foo
miinus viimeiset uudet rivit, kahta poikkeusta lukuun ottamatta. Jos sana tyhjenee tyhjien noteeraamattomien muuttujien laajentamisen vuoksi, se poistetaan (esim. a=; b=; printf "%s\n" one "$a$b" three $a$b five
tulostaa one
, tyhjän rivin, three
, five
). Jättämättömän komennon korvaamisen tulos jaetaan välilyönnissä, mutta paloissa ei käytetä jokerimerkkejä.
Bash -taulukot indeksoidaan välillä 0 – (pituus-1). Zsh-taulukot on indeksoitu yhdestä pituuteen. Kun a=(one two three)
on bashissa, ${a[1]}
on two
, mutta zsh: ssä se ”s one
. Jos vain viitat matriisimuuttujaan ilman aaltosulkeita, bashissa saat ensimmäisen elementin, esim. $a
on one
ja $a[1]
on one[1]
.Tiedostossa zsh $a
laajenee ei-tyhjien elementtien luetteloon ja $a[1]
ensimmäiseen elementtiin. Samoin bashissa matriisin pituus on ${#a}
; tämä toimii myös zsh: ssä, mutta voit kirjoittaa sen yksinkertaisemmin nimellä $#a
. Voit asettaa 0-indeksoinnin oletusasetukseksi setopt ksh_arrays
; tämä ottaa käyttöön myös vaatimuksen käyttää aaltosulkeita viittaamaan taulukkoelementtiin.
Bashissa on ylimääräinen jokerimallit , kuten @(foo|bar)
vastaamaan foo
tai bar
, jotka ovat käytössä vain shopt -s extglob
-asetuksella. Zsh: ssä voit ottaa käyttöön nämä mallit setopt ksh_glob
-ominaisuudella, mutta siellä on myös yksinkertaisempi kirjoittaa natiivi syntaksi , kuten (foo|bar)
, joista osa vaatii setopt extended_glob
(tee laita se .zshrc
-kansioon ja se on oletusarvoisesti valmiissa toiminnoissa). **/
rekursiivisen hakemiston läpikäynti on aina käytössä zsh-tiedostossa.
Bashissa oletusarvoisesti, jos jokerimalli ei vastaa mitään tiedostoa, se jää muuttumattomana. Zsh-tiedostossa oletuksena on virhe, joka on yleensä turvallisin asetus. Jos haluat välittää jokerimerkin parametrin komennolle, käytä lainausmerkkejä. Voit vaihtaa bash-käyttäytymiseen valitsemalla setopt no_nomatch
. Voit saada ei-yhteensopivat jokerimallit laajentumaan tyhjään luetteloon setopt null_glob
.
Bashissa putkilinjan oikea puoli kulkee alikuoressa. Zsh: ssä se kulkee pääkuoressa, joten voit kirjoittaa esimerkiksi somecommand | read output
.
Joitakin hienoja zsh-ominaisuuksia
Tässä on muutamia hienoja zsh-ominaisuuksia, joita bashilla ei ole ( ainakaan ilman vakavaa kyynärpäärasvaa). Jälleen kerran tämä on vain valikoima mielestäni hyödyllisimpiä.
Glob-karsinnat sallivat tiedostojen sovittamisen metatietojen, kuten aikaleiman, koon jne. perusteella. Ne mahdollistavat myös tuotoksen säätämisen. Syntaksi on melko salaperäinen, mutta se on erittäin kätevä. Tässä on muutama esimerkki:
-
foo*(.)
: vain tavalliset tiedostot, jotka vastaavatfoo*
ja symboliset linkit tavallisiin tiedostoihin, ei hakemistoihin ja muihin erikoistiedostoihin. -
foo*(*.)
: vain suoritettavat säännölliset tiedostot, jotka vastaavatfoo*
. -
foo*(-.)
: vain tavalliset tiedostot, jotka vastaavatfoo*
, eivät symbolisia linkkejä ja muut erikoistiedostot. -
foo*(-@)
: vain roikkuvat symboliset linkit, jotka vastaavatfoo*
. -
foo*(om)
: tiedostot, jotka vastaavatfoo*
, lajiteltu viimeisimmän muokkauspäivän mukaan, viimeisin ensin. Huomaa, että jos välität tämän osoitteeseenls
, se ”suorittaa oman lajittelunsa. Tämä on erityisen hyödyllistä… -
foo*(om[1,10])
: 10 viimeisintä tiedostoa, jotka vastaavatfoo*
, viimeisimmät ensin. -
foo*(Lm+1)
: tiedostot, jotka vastaavatfoo*
ja joiden koko on vähintään 1 Mt. -
foo*(N)
: sama kuinfoo*
, mutta jos tämä ei vastaa mitään tiedostoa, luo tyhjä luettelo riippumattanull_glob
-asetuksen asetuksista (katso yllä). -
*(D)
: sovita kaikki tiedostot mukaan lukien pistetiedostot ( paitsi.
ja..
). -
foo/bar/*(:t)
(käyttämällä historian muokkaaja ): tiedostotfoo/bar
, mutta vain tiedoston perusnimi. Esim. jos on afoo/bar/qux.txt
, se laajenee nimelläqux.txt
. -
foo/bar/*(.:r)
: ota tavalliset tiedostot kohtaanfoo/bar
ja poista laajennus. Esimerkiksi.foo/bar/qux.txt
laajennetaan nimelläfoo/bar/qux
. -
foo*.odt(e\""REPLY=$REPLY:r.pdf"\")
: ota luettelo tiedostoista, jotka vastaavatfoo*.odt
, ja korvaa.odt
sanoilla.pdf
(riippumatta siitä, onko PDF-tiedosto tiedosto on olemassa.
Tässä on muutama hyödyllinen zsh-kohtainen jokerimalli .
-
foo*.txt~foobar*
: kaikki.txt
tiedostot, joiden nimi alkaafoo
, mutta eifoobar
. -
image<->.jpg(n)
: kaikki.jpg
-tiedostot, joiden perusnimi onimage
, jota seuraa numero, esim.image3.jpg
jaimage22.jpg
, mutta eiimage-backup.jpg
. Glob-määrittelijä(n)
aiheuttaa tiedostojen luettelon numerojärjestyksessä, ts.image9.jpg
on ennenimage10.jpg
(voit tehdä tämän oletusarvoksi myös ilman-n
kanssasetopt numeric_glob_sort
).
tiedostojen uudelleennimeämiselle , zsh tarjoaa erittäin kätevän työkalu: zmv
-toiminto . Ehdotettu: .zshrc
:
autoload zmv alias zcp="zmv -C" zln="zmv -L"
Esimerkki:
zmv "(*).jpeg" "$1.jpg" zmv "(*)-backup.(*)" "backups/$1.$2"
Bashilla on muutama tapa soveltaa muunnoksia muuttujan arvoa otettaessa . Zsh: llä on joitain samoja ja monia muita .
Zsh: llä on useita vähän käteviä toimintoja hakemistojen muuttamiseen. Ota setopt auto_cd
käyttöön vaihtaaksesi hakemistoon kirjoittaessasi sen nimeä ilman, että sinun tarvitsee kirjoittaa cd
(bashilla on myös tämä nykyään). Voit käyttää kahden argumentin muotoa muotoon cd
vaihtaaksesi hakemistoon, jonka nimi on lähellä nykyistä hakemistoa . Jos esimerkiksi olet /some/where/foo-old/deeply/nested/inside
-kohdassa ja haluat siirtyä kohtaan /some/where/foo-new/deeply/nested/inside
, kirjoita vain cd old new
.
Jos haluat määrittää arvon muuttujalle, kirjoita tietysti VARIABLE=VALUE
. Muokkaukseen muuttujan arvo vuorovaikutteisesti, suorita vain vared VARIABLE
.
Viimeiset neuvot
Zsh: ssä on määritysrajapinta, joka tukee muutamia yleisimpiä asetuksia, mukaan lukien säilötyt reseptit esimerkiksi kirjainkoon merkitsemättömän loppuun saattamiseksi. Tämän käyttöliittymän (uudelleen) suorittaminen (ensimmäistä riviä ei tarvita, jos käytät määritystiedostoa, jonka muokkaaja on zsh-newuser-install
):
autoload -U zsh-newuser-install zsh-newuser-install
Laatikosta, ilman asetustiedostoa, monet zsh: n hyödyllisistä ominaisuuksista on poistettu käytöstä yhteensopivuuden takaamiseksi 1990-luvun versioiden kanssa. zsh-newuser-install
ehdottaa joitain suositeltavia ominaisuuksia, jotka otetaan käyttöön.
Verkossa on monia zsh-määrityskehyksiä (monet niistä ovat Githubissa ). Ne voivat olla kätevä tapa aloittaa joillakin tehokkailla ominaisuuksilla. Kolikon kääntöpuoli on, että ne lukitsevat sinut usein tekemään asioita samalla tavalla kuin kirjoittaja, joten joskus ne ”estävät sinua tekemästä asioita haluamallasi tavalla. Käytä niitä omalla vastuullasi.
zsh-käsikirjassa on paljon tietoa, mutta se kirjoitetaan usein tiukalla ja vaikeasti seurattavalla tavalla, ja siinä on vain vähän esimerkkejä. Älä epäröi etsiä selityksiä ja esimerkkejä verkosta: jos käytät vain zsh, joka on helppo ymmärtää käsikirjassa, menetät. Kaksi hyvää resurssia ovat zsh-käyttäjien postituslista ja Unix Stack Exchange . Laaja artikkelikokoelma zsh-tilaan siirtymisestä Macissa löytyy osoitteesta scriptingosx.com ja hyödyllinen Ruby-komentosarja komentohistorian tuomiseen mukanasi löytyy Githubista.
Kommentit
- Nyt ’ mietin, toimiiko upea ctrl-o zsh: llä. Tietenkään se ei toimi ’ myöskään Mac OS: ssä bashissa, joten se ’ ei ole oikeastaan merkityksellistä tälle vastaukselle tai sivustolle. En voinut ’ löytää mitään tietoa ctrl-o: sta zsh: ssä nopeasta online-hausta, mutta sitten taas, tiedot bash: n ctrl-o: sta ovat myös epätarkkoja …
- @Jasper En tiennyt ’ tiennyt, että bashilla oli tämä. Kuvauksen jälkeen Co tekee saman asian zsh-tiedostossa oletusavaimilla.
- Olin iloinen nähdessäni, että sisällytit ” joitain hienoja zsh-ominaisuuksia ” -osassa ja luki sitä innokkaasti yrittääkseen ymmärtää, miksi Apple olisi voinut päättää siirtyä erittäin yleisestä Bashista paljon vähemmän suosittuun Zsh: ään. En löytänyt ’ mitään yhtään edes etänä pakottavaa perustelemaan kytkintä. Se ’ on ilmeisesti ei-tyhjentävä luettelo, mutta jätitkö pois Zsh: n otsikkoominaisuudet, koska niiden ’ oletetaan olevan ilmeisiä? Mitä minulta puuttuu täällä?
- @CodyGray En tiedä ’ en tiedä ja Apple ei ole tapana ’ oikeuttamaan itsensä. Sillä voi olla jotain tekemistä sen kanssa, että jos tilanne olisi käännetty, ei ’ ei olisi ”mukavia bash-ominaisuuksia” -osaa.Tai se voi johtua siitä, että viimeinen muu kuin GPLv3-bash vanhenee todella , kun taas zsh: llä on liberaali lisenssi.
- Ymmärsin, että lisensointi oli pohjimmiltaan ainoa syy. ’ s myös, miksi macOS: n bash on edelleen v3. Sana kadulla on, että bash ei voitu päivittää ’ ja odotetaan, että se poistetaan, ellei loppukäyttäjä asenna sitä panimolla tai tms. Suunnitelmani oli vaihtaa zsh ennemmin kuin myöhemmin macOS: lle, mutta pitää kiinni Debianista tällä hetkellä.
Vastaa
Muuta komentotulkki nyt ja testi – ei tarvitse odottaa.
chsh -s /bin/zsh
- Kaikki komentosarjat, jotka riippuvat
bash
syntaksin silti löytää ja soittaa bash. - sama Mojaven bash kuljettaa Catalinaa, ja siirtyneet käyttäjät säilyttävät vanhan kuorensa.
- Monilla blogeilla on paljon kirjoitusasetustiedostojen siirtämiseen – tässä on yksi tällainen – https://scriptingosx.com/2019/06/moving-to-zsh-part-2-configuration-files/
- Armin muutti blogisarjansa oikeaksi kirjaksi, jossa oli noin 22 kt sanaa.
Arvioin myös, että 95% MacOS-käyttäjistä ei käytä komentoriviä, ja niistä, jotka käyttävät, toisen 95%: n ei tarvitse muuttaa mitään merkittävää tai kaikki. (Panostin enemmän kuin 10% 1%: sta, jotka tietävät kuoret, täytyy tehdä muuta kuin siirtää pari riviä .dot-tiedostoissa)
Kehotteesi muuttuu, ja jos muutit kehotetta kohdassa bash
, tapa muuttaa sitä kohdassa zsh
ei ole vaikeampi eikä vähempää dokumentoitu kuin bash.
Uudemmat kuoret eivät koskaan pääse irti maasta, jos ne rikkovat suuria esineitä tai aiheuttavat tuskallisen sopeutumisajan. Jos haluat perusteellisemman muutoksen ja todella haluat kuoren, sinun on ajateltava sitä ja tarvitset koulutusta ja aikomusta hyväksyä – kokeile kalaa .
Kommentit
- Olen ristiriidassa
fish
kanssa. Käytän sitä jo kahden vuoden ajan, mutta joidenkin kopioiden / liimattujen yksirivisten yhteensopimattomuus on väsyttävää. Toisaalta se on erittäin kätevä kuori (automaattiset ehdotukset ilman < kbd > välilehteä < / kbd > ovat erinomaisia) - Halusin rakastaa kalaa, haluan silti rakastaa kalaa, mutta minulla on liikaa kuorirakenteita vuosikymmenestä
ksh
-kohdassa, jotta voit todella jättää tuon taiton. Jätän mielelläni bash taaksepäin ja omaksun täysin zsh: n nyt henkilökohtaisesti. - Olen täysin kalojen alla. Se on oikeastaan jälleen yksi Unix-tyyppinen kuori, jossa on vähän vähemmän risteilyä. (Siinä sanotaan kirjaimellisesti ” Lopuksi komentorivikuori 90-luvulle ” etusivulla.) Ainoa uusi kuori, joka Olen nähnyt viime vuosina, että tosiasiallisesti toi jotain uutta (valtavirran) taulukkoon, oli PowerShell, joka valitettavasti rajoittui Windowsiin liian kauan, ja on edelleen rajoitettu .NET: ään. Edelleen ei ole sitä paljon uutta PowerShellissä, jota ’ ei ole jo tehty, esim. DCL: ssä tai JCL: ssä, mutta se on tehty (jonkin verran) hyvällä maulla.
- @bmike Miksi ei vain käyttää ksh: tä? Apple toimittaa uusimman version. Itse olen lyönyt bashia kauan sitten, enkä näe mitään syytä aloittaa zsh: n käyttöä nyt.
- Tämä vastaus ei kuvaa ’ t lainkaan bash: n ja zsh: n eroja. … ja en ’ ole aivan varma, miksi määrittämällä, että ” 95% macOS-käyttäjistä ei ’ t käytä komentoriviä ” on merkitystä sellaisen käyttäjän kysymykselle, joka tietysti käyttää bashia.
Vastaa
Shell-komentosarjat eivät todellakaan ole niin monimutkaiset
Onko shell-komentosarjoissasi shebang-viivoja (aloita #! /bin/bash
tai vastaavaa)? Jos ei, olet ehkä käyttänyt tahattomasti bash-ominaisuutta, jossa se suorittaa komentosarjoja ilman bashia käyttävää shebangia. Muut kuoret, kuten viiva tai zsh, jättävät sen käyttöjärjestelmään, joka yleensä käyttää sen sijaan /bin/sh
. /bin/sh
MacOS: ssa on ja todennäköisesti pysyy kopiona tiedostosta /bin/bash
, mutta suorittamalla bash nimellä sh
aiheuttaa sen erilaisen käyttäytymisen. Yksityiskohdat ovat Bash-käsikirja, 6.11 Bash POSIX-tila . Joitakin kohtia:
- Bash varmistaa, että muuttuja
POSIXLY_CORRECT
on asetettu.
Tämä ympäristömuuttuja voi vaikuttaa useiden muiden työkalujen toimintaan, varsinkin jos GNU-työkaluja on asennettu.
- Prosessin korvaaminen ei ole käytettävissä.
Prosessikorvaus on <(...)
tai >(...)
syntaksia.
- Sisäänrakennetut
.
jasource
sisäänrakennetut tiedostot eivät etsi nykyisestä hakemistosta tiedostonimeä. argumentti, jos sitä ei löydy hakemalla polkua.
Joten jos komentosarjasi teki . foo
odottaen sen hankkivan nykyisen hakemiston foo
-nimisen tiedoston, joka ei toimi. Tee sen sijaan . ./foo
.
Kuten voit arvata numeroiden perusteella, bash-käyttäytymisessä POSIX-tilassa on paljon pieniä eroja. Käytä parhaiten shebangia, jos aiot käyttää komentosarjaasi bash.
Kommentit
- Tarkistettaessa näyttää siltä, että suurin osa kirjoittamistani shell-skripteistä e tai käytä joko nimenomaisesti osiota / bin / bash shebangissa (hyvin harvat niistä) tai osiota / bin / sh (melkein kaikki), jotta ainakaan ei pitäisi olla ongelma. Kiitos.
- Mielestäni prosessien korvaaminen on nyt mahdollista. Kokeilin sitä myös Catalinalla onnistuneesti. Katso: zsh.sourceforge.net/Intro/intro_7.html
- @Siu voitti edelleen ’ t-skriptit, jotka käyttävät
/bin/sh
– tai/bin/bash
-sarjaa shebangissa. Zsh on vain oletusarvoinen vuorovaikutteinen kuori, se ei ’ korvannut bashia kaikkialla - @muru Ah, ymmärrän. En lukenut vastausta huolellisesti ja ajattelin, että kirjoittaja puhui prosessin korvaamisesta
zsh
😅
vastauksessa
Asiat pidetään yksinkertaisina …
Voiko kukaan antaa yksinkertaisen käytännön vertailu tai erityiset kompastuskivet, jotka minun on tiedettävä, jotta voin alkaa työskennellä valmiina uuteen kuoreen, kun Catalina vapautetaan?
Jos Ajattelet uuden oletuskuoren käyttämistä.
- Jos haluat antaa Zsh: lle pyörteen ja tuntea joitain eroja muuttamatta koneen kuoriasetuksia, sinun on voi kokeilla Powerline10k Docker-astiassa ja nähdä, onko se sinun kupillinen teetä.
- Jos et tarvitse kaikkia kelloja ja viheltää ja käytä Bashia vain perusohjelmiin, on melko helppo asettaa kuori, kuten muut täällä selittävät. Ja jos päätät haluat käyttää -ominaisuuksia Bash 5: ssä , se ”on melko triviaali päivitys macOS: lle .
- Jos haluat parantaa komentosarjojesi siirrettävyyttä, jotta ne todennäköisesti toimisivat odotetusti molemmissa kuoreissa, testaa niiden POSIX-yhteensopivuus ja poista kaikki ”basismit”. Olen käyttänyt tähän ShellCheck -sovellusta, ja se toimii melko hyvin vähemmän monimutkaisissa komentosarjoissa.
Vaikka mitään tiettyä polkua ei ole selvä näiden kolmen lähestymistavan pitäisi antaa sinulle riittävästi itseluottamusta tehdä tietoinen päätös ilman, että suunnittelet ongelmaa tai ratkaisutilaa enemmän.
bash version 3.2.57(1)
: Tiedätkö, käyttääkö Applebash
kaikelle ” tärkeälle ” järjestelmälle?