Я ветеран-корн-оболочка, поэтому знаю, что я говорю с этой точки зрения.
Однако мне комфортно работать с оболочкой Bourne, ksh88 и ksh93, и я знаю, какие функции поддерживаются в этом.
Для интерактивного использования возьмите все, что вам подходит. Эксперимент. Мне нравится возможность использовать ту же оболочку для интерактивного использования и программирования.
Я пошел от ksh88 на SVR2 до tcsh, до ksh88sun и ksh93. Я попробовал bash, и ненавидел его, потому что он сплющил мою историю. Затем я обнаружил
shopt -s lithist
и все было хорошо. (Вариант литирования гарантирует, что символы новой строки сохранены в вашей команде .)
Для программирования оболочек я бы серьезно рекомендовал ksh93, если вы хотите согласованный язык программирования, хорошее соответствие POSIX и хорошую производительность, так как многие распространенные unix команды могут быть доступными как встроенные функции.
Если вы хотите, чтобы переносимость использовала как минимум оба. И убедитесь, что у вас есть хороший набор тестов.
Существует много тонких различий между оболочками. Рассмотрим, например, чтение из трубы:
b=42 && echo one two three four |
read a b junk && echo $b
Это приведет к различным результатам в разных оболочках. Корн-раковина управляет трубопроводами спереди назад; последний элемент в конвейере выполняется в текущем процессе.
Еще один пример, иллюстрирующий последовательность: команда echo
сама по себе, которая была устаревшей путем разделения между BSD и SYSV unix, и каждый из них представил свое собственное соглашение, чтобы не печатать новые строки (и другое поведение). Результат этого все еще можно увидеть во многих сценариях «configure».
Ksh принял радикальный подход к тому - и ввел print
команды, которая на самом деле поддерживает оба методу (в -n
вариант из BSD и концевая \c
специального символа из SYSV)
Однако для серьезных систем программирования I Рекомендуем что-то другое, кроме оболочки, например python, perl. Или сделайте еще один шаг вперед и используйте платформу, такую как марионетка, которая позволяет вам наблюдать и исправлять состояние целых кластеров систем с хорошим аудитом.
Программирование на оболочке - это как плавание в неизведанных водах, или, что еще хуже.
Программирование на любом языке требует ознакомления с его синтаксисом, его интерфейсами и поведением. Программирование оболочки не отличается.
Если вы планируете распространять скрипты, используйте posix-sh. Bash - хорошая оболочка, а по умолчанию - Linux. Старые ароматы Unix имеют тенденцию иметь sh, ksh и csh. В производственной среде может быть трудно получить разрешение или прощение для установки оболочки по вашему выбору на всех системах. – 2009-07-07 15:25:47
Он не установлен по умолчанию на AIX, который мы используем на работе (крупная финансовая организация США), и мальчик, если я хочу. – 2011-07-05 18:14:13