Používání zsh jako výchozího shellu na Macu
Počínaje systémem macOS Catalina používá Mac jako výchozí přihlašovací a interaktivní shell zsh. Zsh si můžete nastavit jaký výchozí shell i v dřívějších verzích macOS.
Ve výchozím nastavení používá Mac jako příkazový interpret přihlašovacího shellu a interaktivního shellu buď zsh, nebo bash:
zsh (Z shell) je výchozí shell pro všechny nově vytvořené uživatelské účty, počínaje macOS Catalina.
bash je výchozí shell v macOS Mojave a starších.
Zsh je vysoce kompatibilní s Bourne shellem (sh) a převážně kompatibilní se shellem bash, až na pár rozdílů. Víc informací o zsh a jeho propracovaném systému dokončování na příkazovém řádku zobrazíte tak, že v Terminálu zadáte man zsh
.
Změna výchozího shellu
Ať už máte uživatelský účet konfigurovaný tak, aby používal zsh (doporučeno), bash nebo jiný shell, můžete změnit výchozí shell z příkazového řádku nebo z nastavení Uživatelé a skupiny.
Na příkazovém řádku
V Terminálu zadejte $ chsh -s cesta
, kdecesta je jedna z cest uvedených v /etc/shells, například /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh nebo /bin/tcsh.
Z nastavení Uživatelé a skupiny
macOS Ventura nebo novější:
Vyberte nabídku Apple > Nastavení systému a pak na bočním panelu klikněte na Uživatelé a skupiny.
Se stisknutou klávesou Ctrl klikněte na své uživatelské jméno nebo obrázek uživatele v seznamu uživatelů napravo a vyberte Pokročilé volby.
Po zobrazení výzvy zadejte své uživatelské jméno a heslo.
V nabídce Výchozí shell zvolte shell a kliknutím na OK uložte změny.
V dřívějších verzích macOS:
Zvolte v nabídce Apple > Předvolby systému a klikněte na Uživatelé a skupiny.
Klikněte na
a zadejte své uživatelské jméno a heslo.S podrženou klávesou Control klikněte v seznamu uživatelů nalevo na svoje uživatelské jméno a zvolte Pokročilé volby.
V nabídce Výchozí shell zvolte shell a kliknutím na OK uložte změny.
Jak používat jiné shelly beze změny toho výchozího
Pokud nechcete, aby se v nových oknech a panelech Terminálu používal výchozí přihlašovací shell:
Otevřete Terminál a zvolte Terminál > Nastavení (nebo Předvolby).
Na panelu Obecné vyberte „Příkaz (úplná cesta)“.
Do sousedního pole zadejte jednu z cest uvedených v /etc/shells, například /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh, nebo /bin/tcsh.
Když použijete shell bash, zatímco je macOS nakonfigurovaný na používání jiného shellu, zobrazí se upozornění, že výchozím interaktivním shellem je aktuálně zsh. Upozornění můžete vypnout tím, že do ~/.bash_profile nebo ~/.profile přidáte tento příkaz:
export BASH_SILENCE_DEPRECATION_WARNING=1
Jak přejít na profil a příkazový řádek zsh
Pokud používáte profil bash, například k nastavování proměnných prostředí, aliasů nebo proměnných cest, měli byste přejít na používání jeho ekvivalentu zsh. Příklad:
.zprofile je ekvivalentem .bash_profile a spouští se při přihlašování, včetně přihlašování přes SSH.
.zshrc je ekvivalentem .bashrc a spouští se v každé nové relaci Terminálu.
Pokud používáte .profile (profil kompatibilní s POSIX), můžete nastavit, aby zsh automaticky načetl jeho nastavení. Uděláte to tak, že do .zprofile přidáte tento příkaz:
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
Některá nastavení z profilu bash se do profilu zsh dají přesunout beze změny. Například proměnné prostředí můžete nastavit takto: export MY_SETTING=1
.
zsh rozpoznává jiné specifikátory příkazového řádku než bash a má čistší syntax na určení barevného výstupu, takže s ním nemusíte používat složité únikové sekvence v ANSI. Takto například vypadá syntax výchozího příkazového řádku bash z .bash_profile:
export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "
Při používání .zprofile nebo .zshrc převedete tento řádek bash na řádek zsh takto:
export PS1="%10F%m%f:%11F%1~%f \$ "
Další podrobnosti najdete na stránce uživatelské příručky pro zsh.
Testování shell skriptů
Chcete-li otestovat kompatibilitu skriptů se shelly kompatibilními s Bourne v macOS Catalina nebo novějším, můžete změnit /var/select/sh na /bin/bash, /bin/dash nebo /bin/zsh. Pokud změníte /var/select/sh na jiný shell než bash, pamatujte na to, že skripty používající syntaxi bash nemusí fungovat správně.
Zsh umí emulovat sh. Stačí, když spustíte příkaz zsh --emulate sh
.
Informace o produktech, které nevyrábí Apple, a o nezávislých webech, které Apple nemá pod kontrolou a netestuje je, jsou poskytovány bez doporučení nebo záruky za jejich obsah. Apple v souvislosti s výběrem, výkonem nebo použitím webů nebo produktů třetích stran nepřebírá žádnou odpovědnost. Apple nijak nezaručuje přesnost nebo spolehlivost webů třetích stran. Další informace vám poskytne příslušný výrobce.