В bash постоянно приходится заботиться о переменных, содержащих пробелы (например A="$B"
). Чтобы этого избежать, в zsh содержимое переменной подставляется как один аргумент и никак не интерпретируется. Следующие команды не сработают
A='*'; ls $A # Файл * не найден
A='ls -l'; $A # Команда "ls -l" не найдена
Для совместимости с bash надо выполнить команды setopt GLOB_SUBST
и setopt SH_WORD_SPLIT
В Linux base64 file
в MacOS base64 -i file
. Команда base64 < file
сработает и там и там.