Это не так плохо, как 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
и использовать каждый из них только с оболочкой, для которой онразработан.Если вы хотите избежать дублирования, каждый из них может получить третий файл, содержащий общие команды.
(И, основываясь на комментариях, скорее всего, вы делаете неправильные вещи в первую очередь.)