Próbowałem nowych środowisk deweloperskich, w tym zsh i oh-my-zsh. Teraz, gdy zainstalowałem oh-my-zsh, zaczyna się domyślnie na moich terminalach (iTerm2 i terminal) zawsze zaczynają się od zsh i ustawieniami włączonymi od oh-my-zsh. Zastanawiałem się, czy można „wyłączyć” lub przestać używać zsh i jego konfiguracji z oh-my-zsh bez konieczności odinstalowywania oh-my-zsh? Byłoby również miło wiedzieć, jak je ponownie włączyć.
Obecnie moje terminale automatycznie przechodzą w zsh (myślę) i automatycznie używają oh-my-zsh. Chcę mieć nad tym większą kontrolę, a ja mogę kontrolować zarówno, gdy używany jest zsh, jak i gdy używane są funkcje oh-my-zsh.
Interesuje mnie również to, w jaki sposób aplikacje terminalowe wiedzą, którą powłokę uruchomić przy uruchamianiu. Fajnie byłoby też móc kontrolować!
Jeśli wyjaśnisz jak najwięcej „dlaczego” każdego polecenia, które mi wydasz, to by się przydało! :)
Korzystam z systemu OS X. Nie jestem pewien, czy to ma znaczenie, ale bardziej lubię odpowiedzi bardziej dostosowane do bardziej ogólnych środowisk uniksowych, a nie do moich.
zsh
? czyoh-my-zsh
? który?Odpowiedzi:
Treść twojego pytania jest dwuznaczna, więc nie mogę powiedzieć, czy masz na myśli, że chcesz przestać używać,
zsh
czy chcesz przestaćoh-my-zsh
. Obejmę oba.Wyłączanie
zsh
Po prostu uruchom
chsh
i wybierz powłokę, której używałeś wcześniej. Jeśli nie wiesz, jakiej powłoki używałeś wcześniej, to prawie na pewnobash
. To polecenie zmienia „powłokę logowania” powiązaną z użytkownikiem. Zasadniczo zmienia domyślną powłokę.Będziesz musiał otworzyć nowe okno terminala, aby zmiany odniosły skutek. Jeśli to nie zadziała, musisz się wylogować i zalogować ponownie, aby ponownie zainicjować środowisko.
Wyłączanie tylko
oh-my-zsh
~/.zshrc.pre-oh-my-zsh
istnieje. Prawdopodobnie tak. (Plik ten stworzono gdyoh-my-zsh
skrypt instalacyjny przeniósł swoją poprzednią.zshrc
z drogi..zshrc
Plik jest uruchomieniezsh
, podobnie jak.bashrc
dlabash
).mv ~/.zshrc ~/.zshrc.oh-my-zsh
. Spowoduje to usunięcieoh-my-zsh
-tworzonego.zshrc
, abyśmy mogli przywrócić oryginał, wykonującmv ~/.zshrc.pre-oh-my-zsh ~/.zshrc
.~/.zshrc
w edytorze tekstu. Znajdź wiersz, który mówi,source $ZSH/.oh-my-zsh
albo go skomentuj, albo usuń. Spowoduje to wyłączenie inicjalizacjioh-my-zsh
.Będziesz musiał zrestartować powłokę, aby zmiany odniosły skutek.
źródło
Przełączanie konfiguracji ZSH
Jeśli chcesz przetestować różne ramy konfiguracji zsh (oh-my-zsh, zprezto, etc) i przełączać się między nimi, najlepiej jest za pomocą łączy symbolicznych dla
~/.zsh
,~/.zshrc
,~/.zlogin
,~/.zlogout
,~/.zprofile
, i~/.zshenv
. Możesz utworzyć skrypty powłoki dla każdej struktury, aby utworzyć te dowiązania symboliczne w celu szybszego przełączania.Umieść konfiguracje frameworka we własnych folderach. Dla każdego frameworka.
~/.zsh
, to~/.zsh
Najpierw chroń prąd . Zarówno~/.zsh
dowiązanie symboliczne;rm ~/.zsh
lub~/.zsh
folder;mv ~/.zsh ~/.zsh.backup
mv ~/.zsh ~/.oh-my-zsh
.Po zakończeniu utwórz skrypt powłoki dla każdego frameworka, aby utworzyć niezbędne dowiązania symboliczne. Oto przykład dla zprezto, ponieważ już go używam.
Ten skrypt jest dość prosty i polega na tym, że wszystkie moje dowiązania symboliczne są zorganizowane według tego samego wzorca. Możesz skopiować i wkleić usuń i utworzyć linie po pętli dla dowiązań symbolicznych, które nie są zgodne ze wzorem.
Po zakończeniu użyj
~/bin/use-zprezto
opcji~/bin/use-whatever
- lub -, aby przełączać się między ramami zsh.Zauważ, że zmiany obowiązują tylko w nowych powłokach Zsh, a nie w istniejących powłokach.
Przełączanie powłok
Jest to trochę niebezpieczne, ale jeśli masz na to ochotę, możesz użyć dowiązania symbolicznego do polecenia powłoki i ustawić dowiązanie symboliczne jako domyślną powłokę. Następnie możesz postępować zgodnie z
use-*
zastosować powyższą metodę skryptu, aby zmienić domyślną powłokę.Jako przykład z zsh ...
Jest to niebezpieczne, ponieważ nie można zalogować się pod użytkownikiem, jeśli przechowywana w nim powłoka
/etc/passwd
nie jest poprawnym programem. Możesz więc zablokować swoje konto, jeśli nie będziesz ostrożny; tzn. twoje~/.shell
dowiązanie symboliczne jest zepsute lub nie wskazuje na program interaktywny. Możesz spróbować tego z kontem użytkownika, ale NIE jest to ZALECANE dla twojegoroot
konta.Jeśli nadal chcesz kontynuować, to
źródło
chsh -s / bin / bash
Aby ręcznie ustawić nową domyślną powłokę, wykonaj polecenie chsh -s / my / new / shell, np. Chsh -s / bin / bash. Następnie ponownie otwórz swoje muszle.
źródło
Możesz powiedzieć zsh, aby ładował pliki konfiguracyjne dla użytkownika z innego katalogu, ustawiając zmienną środowiskową
ZDOTDIR
przed uruchomieniem zsh.Jeśli chcesz uruchomić zsh bez ładowania plików konfiguracyjnych, ustaw
ZDOTDIR
katalog na nieistniejący. Jeśli chcesz pominąć pliki konfiguracji systemu (oprócz/etc/zshenv
), możesz uruchomićzsh -f
. Jeśli chcesz pominąć pliki konfiguracji systemu, ale uruchom pliki poszczególnych użytkowników, uruchomzsh -d
.Na przykład, jeśli chcesz przetestować dysk oh-my-zsh bez ustawiania go jako domyślnego, nie umieszczaj polecenia
.zshrc
oh-my-zsh w katalogu domowym. Zamiast tego umieść to w innym miejscu, np. w~/.oh-my-zsh
, a następnie uruchom,ZDOTDIR=~/.oh-my-zsh zsh
gdy chcesz użyć oh-my-zsh.Aplikacje terminalowe uruchamiają powłokę wskazaną przez
SHELL
zmienną środowiskową. Jeśli ta zmienna nie jest ustawiona, uruchamiają powłokę logowania wskazaną w bazie danych użytkowników (/etc/passwd
). Możesz uruchomić inną aplikację podczas uruchamiania emulatora terminala, npxterm -e fish
.źródło
Ponieważ jest to trochę ukryte w @Gilles, odpowiedz na szybki sposób ładowania zsh bez jakiejkolwiek konfiguracji, np. .Zshrc .zshenv itp.
Jest to przydatne, gdy chcesz sprawdzić, czy cokolwiek w twojej konfiguracji uniemożliwia działanie jakiejś funkcji zsh.
źródło