Русская Википедия:Csh

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Другие значения Шаблон:Нет ссылок Шаблон:Lowercase Шаблон:Карточка программы 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.

Примечания

Шаблон:Примечания

Шаблон:Библиоинформация Шаблон:Интерфейсы пользователя в UNIX-подобных системах