Nie pozwól, aby ten hejter zsh cię przygnębił. Zsh jest świetny!
Jeremy Cantrell
Odpowiedzi:
109
Podczas gdy odpowiedź Lhunatha popchnęła mnie we właściwym kierunku, zsh nie wydaje się pobierać .profileautomatycznie. Wiele dobrych informacji na ten temat można znaleźć w tym poście dla superużytkowników .
Adaptacja, której używam, polega na umieszczaniu wspólnych aliasów i funkcji .profilei ręcznym ich pozyskiwaniu w następujący sposób:
W ~/.bashrc:
source ~/.profile
W ~/.zshrc:
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
emulatejest wbudowanym poleceniem zsh. Za pomocą jednego argumentu ustaw opcje zsh, aby emulować określoną powłokę tak bardzo, jak to możliwe.
Tak, myślę, że to najlepsze podejście. Dziękuję za Twoją odpowiedź!
Léo Léopold Hertz 준영
powyższa odpowiedź również działa dobrze. ale muszę to robić za każdym razem, gdy otwieram terminal zshrc. czy możesz mi powiedzieć, jak to poprawić.
thedudecodes
32
Nie możesz „ wyeksportować ” swojego .bashrcpliku do pliku .zshrc. .bashrcto plik, który uruchamia bashpolecenia. .zshrcto plik, który uruchamia zshpolecenia.
Nie można oczekiwać zsh, aby móc uruchomić bashpolecenia w twojej .bashrc, więc należy przekształcić go w nowy .zshrczamiast próbować uruchomić .bashrcz .zshrclub kopiowanie były do tej ostatniej.
Jeśli chcesz mieć wspólny plik inicjujący dla wszystkich powłok; użyj .profile(i usuń .bashrci .zshrc). Pochodzi ze wszystkich powłok POSIX. A tam trzymaj się tylko funkcji powłoki POSIX . Wtedy ten kod będzie działał w dowolnej powłoce POSIX. (Chociaż nie jestem w 100% pewien, czy zshjest zgodny z POSIX).
Chociaż - a najpierw źle odczytałem tę część twojego pytania - nie powinieneś napotkać błędów bashpodczas uruchamiania swojego, .bashrcchyba że umieścisz zshtam polecenia. Czy ty? Jakie błędy otrzymujesz? Wydaje mi się, że dodałeś zshkod do swojego .bashrci bash(oczywiście) go nie rozumiesz.
Na marginesie, ojblasspróbuje poruszyć kwestię przenośności, która tylko częściowo się udaje. zshto świetna powłoka (chociaż sam nie miałem zaszczytów), ale podczas pisania skryptów; Polecam #!/usr/bin/env bashzamiast tego. Głównie tylko dla Ciebie (i ostatecznie dla osób, z którymi się dzielisz) ze względu na przenośność.
Spójrz na stament "Włożyłem mój .bashrc bezpośrednio do mojego .zshrc i spowodowało to wiele błędów, gdy ponownie próbuję użyć Bash." teraz pomyśl przez chwilę, co mogłoby to spowodować ... a następnie przeredaguj swój post.
Odpowiedzi:
Podczas gdy odpowiedź Lhunatha popchnęła mnie we właściwym kierunku, zsh nie wydaje się pobierać
.profile
automatycznie. Wiele dobrych informacji na ten temat można znaleźć w tym poście dla superużytkowników .Adaptacja, której używam, polega na umieszczaniu wspólnych aliasów i funkcji
.profile
i ręcznym ich pozyskiwaniu w następujący sposób:W
~/.bashrc
:source ~/.profile
W
~/.zshrc
:[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
emulate
jest wbudowanym poleceniem zsh. Za pomocą jednego argumentu ustaw opcje zsh, aby emulować określoną powłokę tak bardzo, jak to możliwe.źródło
Nie możesz „ wyeksportować ” swojego
.bashrc
pliku do pliku.zshrc
..bashrc
to plik, który uruchamiabash
polecenia..zshrc
to plik, który uruchamiazsh
polecenia.Nie można oczekiwać
zsh
, aby móc uruchomićbash
polecenia w twojej.bashrc
, więc należy przekształcić go w nowy.zshrc
zamiast próbować uruchomić.bashrc
z.zshrc
lub kopiowanie były do tej ostatniej.Jeśli chcesz mieć wspólny plik inicjujący dla wszystkich powłok; użyj
.profile
(i usuń.bashrc
i.zshrc
). Pochodzi ze wszystkich powłok POSIX. A tam trzymaj się tylko funkcji powłoki POSIX . Wtedy ten kod będzie działał w dowolnej powłoce POSIX. (Chociaż nie jestem w 100% pewien, czyzsh
jest zgodny z POSIX).Widzieć: http://mywiki.wooledge.org/DotFiles .
Chociaż - a najpierw źle odczytałem tę część twojego pytania - nie powinieneś napotkać błędów
bash
podczas uruchamiania swojego,.bashrc
chyba że umieściszzsh
tam polecenia. Czy ty? Jakie błędy otrzymujesz? Wydaje mi się, że dodałeśzsh
kod do swojego.bashrc
ibash
(oczywiście) go nie rozumiesz.Na marginesie,
ojblass
próbuje poruszyć kwestię przenośności, która tylko częściowo się udaje.zsh
to świetna powłoka (chociaż sam nie miałem zaszczytów), ale podczas pisania skryptów; Polecam#!/usr/bin/env bash
zamiast tego. Głównie tylko dla Ciebie (i ostatecznie dla osób, z którymi się dzielisz) ze względu na przenośność.źródło