Как вы можете экспортировать ваш .bashrc в .zshrc?

87

Я пытаюсь перейти на zsh с Bash.

Я поместил свой .bashrc прямо в свой .zshrc, и это вызвало много ошибок, когда я снова пытаюсь использовать Bash.

Как вы можете экспортировать ваш .bashrc в .zshrc?

Лео Леопольд Герц 준영
источник
19
Не позволяй этому зш-ненавистнику унизить тебя. Zsh отличный!
Джереми Кантрелл

Ответы:

110

Хотя ответ lhunath подтолкнул меня в правильном направлении, zsh, похоже, не запускается .profileавтоматически. Много полезной информации по этой теме можно найти в этом сообщении суперпользователя .

Адаптация, которую я использую, заключается в добавлении общих псевдонимов и функций .profileи ручном их поиске следующим образом:

В ~/.bashrc:

source ~/.profile

В ~/.zshrc:

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

emulateэто встроенная команда zsh. С одним аргументом настройте параметры zsh, чтобы максимально имитировать указанную оболочку.

Райн Эверетт
источник
2
Да, я считаю, что это лучший подход. Спасибо за ваш ответ!
Лео Леопольд Герц 준영
приведенный выше ответ отлично работает и для меня. но я должен делать это каждый раз, когда открываю терминал zshrc. подскажите, как это исправить.
thedudecodes
33

Вы не можете « экспортировать » свой файл .bashrcв формат .zshrc. .bashrcэто файл, который запускает bashкоманды. .zshrcэто файл, который запускаетсяzsh команды.

Вы не можете ожидать, zshчто сможете запускать bashкоманды в вашем .bashrc, поэтому вам следует преобразовать его в новый .zshrcвместо того, чтобы пытаться запустить .bashrcиз.zshrc или копирования первого во второе.

Если вам нужен общий файл инициализации оболочки для всех ваших оболочек; использовать .profile(и удалить .bashrcи .zshrc). Его используют все оболочки POSIX. И здесь придерживайтесь только функций оболочки POSIX . Затем этот код будет работать в любой оболочке POSIX. (Хотя я не уверен на 100%, что zshон соответствует стандарту POSIX).

Видеть: http://mywiki.wooledge.org/DotFiles .

Хотя - и я сначала неправильно понял эту часть вашего вопроса - вы не должны испытывать ошибок bashпри запуске, .bashrcесли вы не zshвведете туда команды. А ты? Какие ошибки вы получаете? Мне кажется, вы добавили zshкод в свои .bashrcиbash (очевидно) не понимаете.

В стороне, ojblassпытается сделать акцент на переносимости, что удается лишь частично. zshотличная оболочка (правда, я не имел отличия), но при написании скриптов; Я бы рекомендовал вам сделать это с помощью #!/usr/bin/env bash. В основном только для вас (и, в конечном итоге, для людей, с которыми вы делитесь) ради переносимости.

лхунатх
источник
Посмотрите на высказывание «Я поместил свой .bashrc прямо в свой .zshrc, и это вызвало много ошибок, когда я снова пытаюсь использовать Bash». теперь подумайте на мгновение, что могло бы вызвать это ... а затем перефразируйте свой пост.
ojblass