Първото от тях е понятието конзола. Това е исторически термин зад който стои дългогодишната история на компютъра въобще. В началото под конзола се е разбирало терминала на който е стоял администратора на машината и на който са излизали системните съобщения. Най-общо казано конзолата е текстово изходно устройство, което прихваща системните съобщения идващи от ядрото на операционната система или от програмата за системни съобщения. В големите компютри, конзолата най-често е била свързана със серийна връзка, работеща по стандарта RS-232 (серийния порт на компютъра). В съвременните персонални компютри под конзола се разбира монитора на компютъра. В Линукс съществува и понятието виртуална конзола, като това са шесте терминални прозореца, които може да се превключват с Alt+F1 до F6.
Важно е да се отбележи, че системните съобщения излизат на първа виртуална конзола даже и никой да е логнат в нея. Типичен пример за това са системните съобщения на ядрото, които се появяват при стартирането на системата.
Друго важно понятие е терминал. Терминал с устройство (най-често хардуерно), което позволява комуникацията с компютъра. По принцип терминала е комбинация от монитор и клавиатура. Това не е така, обаче когато се говори за отдалечен терминал. Отдалечения терминал представлява специална програма съставена от клиент и сървър, чрез която потребителя може да се свързва отдалечено към компютър в който има валидно потребителско име и парола.
Най-общо терминала е това което стои между потребителя и шела (командния интерпретатор). Шел се нарича програмата с помощта, на която системата комуникира с потребителя. Тя чете въведените от терминала редове и изпълнява различни операции в зависимост от това което е въведено. След това, шела се опитва да преобразува въвежданите конструкции в инструкции, които ядрото е в състояние да разбере.
Всеки потребител при логическото си включване в системата стартира свое копие на шел в паметта. Това се прави, за да може той да работи без да пречи на останалите потребители на системата.
Шела възприема всичко до първия интервал като команда, а всичко останало, като аргументи на тази команда, като аргументите също се разделят с интервали.
Всички (или поне повечето) Линукс системи имат повече от един валиден шел.
Те са описани във файла /etc/shells. Той има следния прост вид:
/bin/bash
/bin/tcsh
/bin/csh
/bin/ash
/bin/ksh
/bin/zsh
/bin/rbash
Линукс система може да има повече инсталирани командни интерпретатори, но те са недостъпни за използване ако не са описани в този файл. Всеки потребител може да промени своя шел чрез командата chsh. Без параметри командата влиза в интерактивен режим на работа, а чрез опцията -s, този режим се изключва. Формата на командата е следния:
#chsh -s login_shell user
или само
#chsh
В някои дистрибуции е възможно проверка на валидните шелове чрез ключа -l към командата chsh, но Slackware не поддържа този ключ.
Въпреки, че съществуват множество командни интерпретатори, то не всички се използват масово. Най-често използваните командни интерпретатори са:
bash – bash е команден интерпретатор съвместим с шела sh. Той може да изпълнява команди, както от ред, така и от файл. Bash притежава мощен скриптов език, чрез който може да се пишат програми, изпълнявани директно от командния интерпретатор. Освен това bash притежава и функции, които са присъщи на други командни интерпретатори като ksh и csh.
csh – това е шел, който обединява типичните функции за един команден интерпретатор като автоматично завършване на файлов имена при натискането на Tab, управление на задачите и поддръжка на история на командите със синтаксиса на C.
tcsh – подобрена версия на csh, включваща допълнително корекция на синтаксиса и др., като запазва пълна съвместимост с оригиналния csh. Повечето дистрибуции създават символична връзка csh, сочеща към tsch.
ksh – KornShell e команден интерпретатор, поддържащ собствен език за програмиране и позволява изпълнение на команда както от команден ред, така и от файл.
zsh – подобрена версия на ksh. Притежва множество предимства пред него, като функции, вградена синтактична проверка. За разлика от tcsh и csh, то zsh не е напълно съвместим с ksh.
Повечето от изброените командни интерпретатори (bash, ksh, zsh) създават символична връзка, която започва с r и завършва с името на шела (rbash, rksh, rzsh), която указва на командния интерпретатор да превключи в защитен режим.
В този режим потребителя е силно ограничен, като ограниченията зависят от конкретния шел. Описанието на restricted шеловете в /etc/shells не се препоръчва, защото след преминаване към такъв шел, потребителя не може да се върне към обичайния за него команден интерпретатор.
Най-използвания от гореизброените командни интерпретатори е bash. Той е и шела по-подразбиране в Linux. Bash е абревиатура от Bourne Again Shell, създаден от Free Software Foundation на базата на Bourne shell от UNIX™.
Всяка обвивка (обкръжение) има свои променливи на обкръжението. Техните стойности се установяват от командния интерпретатор при стартирането му и имат различни стойности за различните потребители. Ето ви още една причина за всеки потребител да се стартира отделно копие на интерпретатора. Стойностите на тези променливи могат да се променят в процеса на работа.
Например ако не ви харесва знака $ за промпт достатъчно е да смените променливата на обкръжението PS1.
Променливите на обкръжението може да се променят чрез командата:
$export PS1=%
%
само за текущата сесия или чрез промяна на файла .bash_profile или само .profile, като в този случай промяната става активна след като потребителя се логне и е постоянна. Slackware използва файла .bash_profile за въвеждане на команди или настройка на bash. Този файл се зарежда винаги когато потребителя влезе в системата. По-важните опции на bash са: