Это не так плохо, как Python против Perl. И bash, и zsh являются производными от оболочки Bourne (чье поведение стандартизировано POSIX), поэтому любой сценарий, предназначенный для работы с /bin/sh
, скорее всего, будет работать как с bash, так и с zsh.
Обычно ваш ~/.zshrc
, как следует из названия, предназначен для использования с zsh и обычно включает команды, специфичные для zsh, такие как autoload
и compinit
.
Вы можете сделать эти команды условными, например:
if [ "$ZSH_VERSION" ] ; then
autoload -U compinit
compinit
fi
Но, конечно, это означает, что вы не получите функциональности этих команд, если не найдете способ эмулировать их в bash. (Я не знаком ни с одной из команд, поэтому не могу вам помочь.)
(Обратите внимание, что это не удастся, если вы сделали set -u
или set -o nounset
в своей оболочке bash.)
Но если вы собираетесь использовать и zsh, и bash, вероятно, имеет смысл иметь отдельные файлы ~/.bashrc
и ~/.zshrc
и использовать каждый из них только с той оболочкой, для которой он предназначен. Если вы хотите избежать дублирования, каждый из них может создать третий файл, содержащий общие команды.
(И, судя по комментариям, вы, скорее всего, делаете что-то не так.)
person
Keith Thompson
schedule
15.01.2012
source
создании вашего .zshrc из любого сценария, не говоря уже о сценариях bash. - person Gordon Davisson   schedule 16.01.2012