LINUX.ORG.RU

История изменений

Исправление nexfwall, (текущая версия) :

Просто поделюсь своими впечатлениями, когда тоже бегал по альтернативным шеллам. Когда в последний раз тыкал шеллы, было так:

Zsh очень похож на bash. Нет, даже так: это улучшенная версия bash. Нативная поддержка не только целых чисел, но и чисел с точкой. Улученные массивы и хэши(правда, ЕМНИП, их до сих пор нельзя вкладывать друг в друга, только по строковым ссылкам). Улучшенный глоббинг, который заменяет find в большинстве случаев. Мне бы очень хотелось, чтобы bash хоть что-то перенял... Но взамен мы получаем кучу костылей для поддержки всяких там tcsh, ksh и прочих маргинальных шеллов. И слишком сильную конфигурируемость. СЛИШКАМ МНОГА НАСТРОЕК. И каждая настройка довольно сильно меняет скриптинг(например, кто-то может отключить определение переменных как в ksh, и всё, приехали). И в итоге даже страшно писать скрипты, которые могут выйти за пределы локалхоста. Ибо конфигурация на конфигурацию не приходится.

К тому же zsh многими дистрибутивами поддерживается второстепенно(в принципе проблема и fish тоже). Archlinux - единственный известный мне дистрибутив, где он по умолчанию. Во всех остальных bash. Что довольно сказывается на поддержке некоторых терминалов этого шелла. Например, уведомления об окончании выполнения команды, в которые умеет gnome-terminal, не работают в zsh. Скорее всего потому, что они захардкодили, чтобы $SHELL соответствовал /bin/bash. Но реализуется это по сути через проброс функции для формирования приглашения используя окружение.

Самая главная фича fish, ИМХО, это то, что разбивка на слова не производится при вставке переменных. При передаче аргументов не надо каждый раз экранировать переменные кавычками("$PATH"), дабы не допустить случайного разбития строк, если каким-то волшебным образом там окажется пробел. Плюс ещё реализация функций там хороша, и «живое» автодополнение. Для всего остального бесполезен. И для более-менее продвинутого скриптинга тоже. Имеет всего 2 типа данных - строка(как обычно), и массив из строк. Поэтому, если вдруг понадобится написать нечто большее, чем запуск двух команд, получится такой же рассадник костылей как winetricks.

Всё закончилось тем, что забил на это дело, и стал жрать что дают. В Fedora по умолчанию bash, его и использую. Да и лучше я таки допилю bash под себя, или напишу свою шелллибу, чем буду трахаться с совместимостью моих скриптов на других тачках. Костыли над тупостью bash, писать научился уже давно.

Выдохнул.

Исходная версия nexfwall, :

Просто поделюсь своими впечатлениями, когда тоже бегал по альтернативным шеллам. Когда в последний раз тыкал шеллы, было так:

Zsh очень похож на bash. Нет, даже так: это улучшенная версия bash. Нативная поддержка не только целых чисел, но и чисел с точкой. Улученные массивы и хэши(правда, ЕМНИП, их до сих пор нельзя вкладывать друг в друга, только по строковым ссылкам). Улучшенный глоббинг, который заменяет find в большинстве случаев. Мне бы очень хотелось, чтобы bash хоть что-то перенял... Но взамен мы получаем кучу костылей для поддержки всяких там tcsh, ksh и прочих маргинальных шеллов. И слишком сильную конфигурируемость. СЛИШКАМ МНОГА НАСТРОЕК. И каждая настройка довольно сильно меняет скриптинг(например, кто-то может отключить определение переменных как в ksh, и всё, приехали). И в итоге даже страшно писать скрипты, которые могут выйти за пределы локалхоста. Ибо конфигурация на конфигурацию не приходится.

К тому же zsh многими дистрибутивами поддерживается второстепенно(в принципе проблема и fish тоже). Archlinux - единственный известный мне дистрибутив, где он по умолчанию. Во всех остальных bash. Что довольно сказывается на поддержке некоторых терминалов этого шелла. Например, уведомления об окончании выполнения команды, в которые умеет gnome-terminal, не работают в zsh. Скорее всего потому, что они захардкодили, чтобы $SHELL соответствовал /bin/bash. Но реализуется это по сути через проброс функции для формирования приглашения используя окружение.

Самая главная фича fish, ИМХО, это то, что разбивка на слова не производится при вставке переменных. При передаче аргументов не надо каждый раз экранировать переменные кавычками("$PATH"), дабы не допустить случайного разбития строк, если каким-то волшебным образом там окажется пробел. Плюс ещё реализация функций там хороша, и «живое» автодополнение. Для всего остального бесполезен. И для более-менее продвинутого скриптинга тоже. Имеет всего 2 типа данных - строка(как обычно), и массив из строк. Поэтому, если вдруг понадобится написать нечто большее, чем запуск двух команд, получится такой же рассадник костылей как winetricks.

Выдохнул.