Jak możesz wyeksportować plik .bashrc do .zshrc?

85

Próbuję przejść do zsh z Bash.

Umieściłem plik .bashrc bezpośrednio w pliku .zshrc i spowodowało to wiele błędów, gdy ponownie próbuję użyć Bash.

Jak możesz wyeksportować plik .bashrc do .zshrc?

Léo Léopold Hertz 준영
źródło
19
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.

Ryne Everett
źródło
2
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).

Widzieć: http://mywiki.wooledge.org/DotFiles .

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ść.

lhunath
źródło
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.
ojblass