Я новичок в Linux и у меня есть несколько вопросов о скриптах оболочки:
- оболочка
- оболочка C
- Оболочка Bash
- оболочка Борна
- оболочка кукурузы
Так много "оболочек"! Как мне узнать, на какие интерпретаторы настроена моя система Linux? Если у меня нет поддержки, скажем, korn
, то как мне настроить свою систему для ее поддержки?
И еще, какая из этих оболочек наиболее «активна» (чаще всего обновляется и поддерживается)?
Заранее спасибо!
решение1
Проблема, которую вы затронули, является причиной того, почему у нас есть понятиеОболочки, совместимые с POSIXи возможность создания "переносимого" кода. Пока вы придерживаетесь синтаксиса, совместимого с POSIX, изложенного в этой ссылке, вы можете быть уверены, что ваш код является переносимым.
Тем не менее, если вашей целевой аудиторией является только Linux, то все дистрибутивы Linux, которые я когда-либо видел, поставляются bash
с оболочкой по умолчанию, поэтому вы можете быть уверены, что скрипт, совместимый с Bash 3.x, будет работать практически на любом дистрибутиве Linux.
решение2
Первый UNIX был в AT&T. Первой оболочкой была Bourne shell. Она была очень крутой, но имела некоторые серьезные ограничения.
Когда ребята изБерклиначали играть с UNIX и пытались сделать его лучше, они выпустили оболочку C. У нее был другой язык программирования (хотя и по-своему несовершенный) но был намного лучше в интерактивном использовании. Благодаря своим преимуществам в интерактивном использовании он стал очень популярен в любой UNIX, которая произошла от Berkeley UNIX.
C shell (или csh) породил клон с открытым исходным кодом под названием tcsh. Если вы используете csh, вы, вероятно, используете не «истинный» или оригинальный csh, а tcsh.
Тем временем, ребята из UNIX не сидели сложа руки. Дэйв Корн (хороший парень) создал новую оболочку под названием... Korn shell. Она следовала модели программирования, созданной Bourne shell (возможно, превосходящей модель csh). Она стала очень популярной, стала повседневной оболочкой для многих людей. Она также стала частью спецификации UNIX. Это породило довольно популярный клон с открытым исходным кодом под названием pdksh, который довольно близок (хотя и не на 100%) совместим. В конце концов AT&T выпустила код с открытым исходным кодом.
Ребята из GNU хотели создать свою собственную UNIX-овскую систему, поэтому им нужна была оболочка, которую они могли бы включить, не беспокоясь о проблемах лицензирования. Они создали bash, Bourne Again SHell. В основном совместимая с оригинальным Bourne и вобравшая в себя идеи как из Csh, так и из Ksh, она стала популярной как из-за простоты использования, так и потому, что она поставлялась с каждым Linux. Было несколько версий, версия 2 — первая очень удобная, а сейчас она находится в версии 4 с новыми функциями.
Затем появился zsh. Он также следовал синтаксису оболочки Bourne и копировал все хорошее, что было в оболочке Bourne, ksh, csh и bash. Он имеет, пожалуй, самый продвинутый синтаксис с функциями, которых нет в других оболочках.
TL;DRИтак, что использовать? Если вы кодируете скрипт запуска, вам нужно использовать /bin/sh, который совместим с POSIX/Original Bourne. Язык редкий, но он будет работать, даже если такие диски, как /usr, недоступны.
Если нет скриптов запуска, у вас есть немного больше выбора. Если вы работаете только на своей машине, используйте все, что доступно в данный момент. Вы управляете своей машиной. Если вы пишете для раздачи другим людям, я бы использовал /bin/sh или bash. /bin/sh, хотя и простой, всегда доступен. bash имеет открытый исходный код, поэтому почти всегда доступен, достаточно стар, чтобы быть везде, но достаточно нов, чтобы иметь некоторые новые функции. Csh доступен не везде, как и zsh.