csh
Из Википедии, бесплатной энциклопедии
В статье не хватает ссылок на источники (см. рекомендации по поиску). |
C shell | |
---|---|
Тип | Командная оболочка UNIX |
Автор | Билл Джой |
Разработчик | Билл Джой |
Написана на | Си |
Операционные системы | BSD, UNIX, Linux, macOS |
Первый выпуск | 1978 |
Последняя версия | 6.20.00 (24 ноября 2016[1]) |
Репозиторий | github.com/freebsd/freeb… |
Лицензия | Лицензия BSD |
C shell (csh) — командная оболочка UNIX со встроенным скриптовым языком, разработанная Биллом Джоем, активным разработчиком BSD UNIX и создателем редактора vi, в 1979 году.
Базировался на коде командного интерпретатора шестой версии UNIX. Скриптовый язык не уступает Bourne shell по мощности, но отличается синтаксисом. В то время как Борн скопировал все основные операторы с языка Алгол 68, Билл Джой использовал в качестве макета язык Си, вероятно, руководствуясь своими предпочтениями и предпочтениями других пользователей BSD UNIX.
В начале 1990-х годов C shell подвергся критике за свою двусмысленность и немногословность интерпретатора, останавливающего выполнение скрипта, но не сообщающего никаких подробностей о том, что же всё-таки произошло. Порой скрипты csh работали совсем не так, как этого ожидал пользователь. Также встречались ситуации, когда интерпретатор отбраковывал, казалось бы, непротиворечивые строки кода.
C shell вошёл в поставку 4.1BSD и до сих пор остаётся базовой частью всех её потомков, в том числе FreeBSD и OpenBSD.
Сравнение с Bourne shell
[править | править код]Условие
[править | править код] Bourne shell #!/bin/sh if [ $days -gt 365 ] then echo This is over a year. fi | C shell #!/bin/csh if ( $days > 365 ) then echo This is over a year. endif |
Цикл с предусловием
[править | править код] Bourne shell #!/bin/sh i=2 j=1 while [ $j -le 10 ] do echo '2 **' $j = $i i=`expr $i '*' 2` j=`expr $j + 1` done | C shell #!/bin/csh set i = 2 set j = 1 while ( $j <= 10 ) echo '2 **' $j = $i @ i *= 2 @ j++ end |
Цикл со счётчиком
[править | править код] Bourne shell #!/bin/sh for i in d* do case $i in d?) echo $i is short ;; *) echo $i is long ;; esac done | C shell #!/bin/csh foreach i ( d* ) switch ( $i ) case d?: echo $i is short breaksw default: echo $i is long endsw end |
Применяемость
[править | править код]C-shell входил в состав Unix BSD и в ходе заимствования её СССР получил применение в её русской локализации ДЕМОС; при развитии нового проекта под GNU (UNIX была защищена авторским правом) Linux была ориентирована на командный процессор Боурна с другим синтаксисом. В дальнейшем ввиду равномощности языков программирования они были включены в bash, а ksh, csh, и другие интерпретаторы реализованы в виде жёстких ссылок в файловой системе на bash.
Примечания
[править | править код]- ↑ Zoulas, Christos (24 Ноябрь 2016). "tcsh-6.20.00 is now available!". mx.gw.com. Архивировано из оригинала 25 ноября 2016. Дата обращения: 24 ноября 2016. Источник . Дата обращения: 18 марта 2019. Архивировано из оригинала 25 ноября 2016 года.