Във FreeBSD, много от ежедневната работа се извършва през интерфейс с командна линия наречен шел (обвивка). Основната работа на шела е да приема команди и да ги изпълнява. Много от обвивките имат вградени функции улесняващи изпълнението на ежедневни задачи като работа с файлове, редактиране на командната линия, макро команди и променливи на обкръжението. FreeBSD идва с набор от шелове, като sh, Bourne Shell, и tcsh, подобрения C-shell. Много други шелове също са достъпни чрез колекцията от портове като zsh и bash.
Кой шел да използвате? Наистина е въпрос на вкус. Ако сте C програмист, вероятно ще се чувствате по-удобно със C-подобен шел като tcsh. Ако идвате от Linux или сте нов в UNIX® командите можете да опитата bash. Идеята е, че всеки от шеловете има някои уникални свойства, които може или не да работят за вас, и че имате избор кои шел да използвате.
Едно често използвано свойство е дописването на имената на файлове. Въвеждайки първите няколко символа от името на команда или файл обикновено можете да накарате шела да допише командата или името на файла като натиснете клавиша Tab. Ето един пример. Да предположим, че имате два файла наречени foobar и foo.bar. Вие искате да изтриете foo.bar. Това което можете да напишете с клавиатурата е: rm fo[Tab].[Tab].
Обвивката (шел) ще отпечата rm foo[BEEP].bar.
[BEEP] е камбаната на конзолата, което в този случай означава, че шела не е могъл да допише напълно името на файла защото има повече от един отговарящ на условието. И двата примерни файла foobar и foo.bar започват с fo, и шела не може да довърши името до foo. Ако добавите ., и тогава натиснете Tab отново, тогава той ще може да допише името.
Друго свойство на шела е използването на променливи от обкръжението. Това са променливи които се съхраняват в пространството на шела. Това пространство може да бъде четено от всяка програма стартирана от шела и поради това обикновено съдържа доста променливи. Ето списък на някои често използвани променливи и тяхното значение:
| Променлива | Описание |
|---|---|
| USER | Името на текущия потребител. |
| PATH | Списък на директории разделен с двоеточие в който да се търсят имената на бинарни файлове. |
| DISPLAY | Мрежовото име на X11 дисплея към който ще се свързвате, ако има такъв. |
| SHELL | Текущият шел. |
| TERM | Името на потребителския терминал. Използва се за да се укажат възможностите на терминала. |
| TERMCAP | База данни с терминалните кодове за освобождаване (escape codes) при извършване на различни терминални функции. |
| OSTYPE | Тип на операционната система т.е., FreeBSD. |
| MACHTYPE | Архитектурата на системата (CPU). |
| EDITOR | Зададения текстов редактор за текущия потребител. |
| PAGER | Зададения потребителски пейджър. |
| MANPATH | Разделен със двоеточие списък на директориите в които да се търси за страници от ръководствата. |
Установяване на променливи в обкръжението е различно за различните шелове. Например в C-тип шелове като tcsh и csh, трябва да използвате setenv за да дадете стойност на променлива. Под Bourne шелове като sh и bash, трябва да използвате export. Например, за да зададете или модифицирате променливата EDITOR под csh или tcsh трябва да използвате команда подобна на тази EDITOR /usr/local/bin/emacs:
% setenv EDITOR /usr/local/bin/emacs
Под Bourne шелове:
% export EDITOR="/usr/local/bin/emacs"
Можете да накарате повечето шелове да покажат (заменят) променлива на обкръжението като сложите $ символ преди нея в командната линия. Например, echo $TERM ще отпечата стойността на $TERM, защото шелът заменя $TERM и я предава стойността на echo.
Шеловете третират много от специалните символи, наречени мета-символи като специално представяне на данни. Най-често използвания е символа *, който представя каквито и да са символи в името на файл. Тези специални мета-символи могат да се използват за представяне на група от файлове. Например, пишейки echo * е почти същото като ls защото шела взима всички файлове които отговарят на * и ги поставя на командната линия за echo.
За да се предотврати интерпретирането на тези символи от шела те могат да бъдат освободени от шела с помощта на обратна черта (backslash) (\) преди тях. echo $TERM отпечатва типа на терминала echo \$TERM ще отпечата $TERM както е.
Най-лесният начин да смените шела си е да използвате командата chsh. Изпълняването на chsh ще отвори редактора които се указан в променливата EDITOR; ако не е зададена ще бъде извикан vi. Променете ``Shell:'' реда според желанието си.
Можете да извикате chsh с опция -s; това се смени шела ви без да се налага да отваряте редактора. Например, ако искате смените шела си на bash, следното ще го направи:
% chsh -s /usr/local/bin/bash
Стартирането на chsh без параметри и редактирането на шела по подразбиране също ще работи.
Note: Шела които искате да използвате трябва да съществува в /etc/shells файла. Ако сте инсталирали шел от колекцията портове, то вероятно това вече е направено. Ако инсталирате шела ръчно, ще трябва да го направите сами.
Например, ако инсталирате bash ръчно и го сложете в /usr/local/bin, бихте искали да:
# echo "/usr/local/bin/bash" >> /etc/shellsСлед това стартирайте отново chsh.
Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
За въпроси относно FreeBSD, прочетете документацията преди да попитате в <questions@FreeBSD.org>.
За въпроси относно този документ, e-mail <doc@FreeBSD.org>.