Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Вопросы истории: UNIX, Linux, BSD ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 57

Автор Π€Π΅Π΄ΠΎΡ€Ρ‡ΡƒΠΊ АлСксСй Π’ΠΈΠΊΡ‚ΠΎΡ€ΠΎΠ²ΠΈΡ‡ "alv"

А Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ,

Π§Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Π½Π° свСтС Π³ΠΎΡ€Ρ‹, ΠšΡƒΠ΄Π° Ρ‚Π°ΠΊ просто ΡƒΠ±Π΅ΠΆΠ°Ρ‚ΡŒ.

Π’ΠΎ Π΅ΡΡ‚ΡŒ BSD-систСмы – послСдний Ρ€ΡƒΠ±Π΅ΠΆ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»Π΅ΠΉ Π² ΠΌΠΈΡ€Π΅ UNIX-подобия.

Π§Π°ΡΡ‚ΡŒ III. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ интСрфСйсов

Π“Π»Π°Π²Π° Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ пСрвая. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ shell'ΠΎΠ²

Π”ΠΎΠ»Π³ΠΎΠ΅ врСмя ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ интСрфСйсом, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сталкивался ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒ любой POSIX-совмСстимой ОБ, Π±Ρ‹Π» интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки: ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ ΠΎΠ½ Π²ΠΈΠ΄Π΅Π» послС Π²Π²ΠΎΠ΄Π° пароля ΠΈ Π»ΠΎΠ³ΠΈΠ½Π° Π² тСкстовой консоли. И с Π½ΠΈΠΌ ΠΆΠ΅ послСдним ΠΎΠ½ расставался, выходя ΠΈΠ· систСмы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹. НынчС это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, Π²Ρ…ΠΎΠ΄ Π² систСму ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСтся Π² графичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ дисплСйный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€. Однако интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (Command Line Interface, Π΄Π°Π»Π΅Π΅ просто CLI) ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ остаётся Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠΎΠΌ Π½ΠΎΠΌΠ΅Ρ€ ΠΎΠ΄ΠΈΠ½ для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»Π΅ΠΉ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΅Π³ΠΎ история Π² этой части ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ рассмотрСна ΠΏΠ΅Ρ€Π²ΠΎΠΉ.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CLI прСдставлСны классом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ просто шСллами (shell – Ρ€Π°ΠΊΠΎΠ²ΠΈΠ½Π°, скорлупа). Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ дСлится, Π½Π° основС синтаксиса ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠΌΠΈ языка, Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ – sh- ΠΈ csh-совмСстимыС. На самом Π΄Π΅Π»Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ синтаксисом ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‚ΡΡ, Π° Π»Π΅ΠΆΠ°Ρ‚ Π³Π»ΡƒΠ±ΠΆΠ΅ – Π² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… конструкций, Π½ΠΎ ΠΊ истории, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ обсуТдаСм, это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚.

ПоявлСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ шСлла

ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ для ΠΏΠ΅Ρ€Π²ΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ UNIX'Π° Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая сначала имСновалась, Π·Π° отсутствиСм Π΄Ρ€ΡƒΠ³ΠΈΡ…, просто shell. Она Π±Ρ‹Π»Π° написана Π² 1978 Π³ΠΎΠ΄Ρƒ Π‘Ρ‚Π΅Ρ„Π°Π½ΠΎΠΌ Π‘ΠΎΡ€Π½ΠΎΠΌ, вслСдствиС Ρ‡Π΅Π³ΠΎ Π·Π° Π½Π΅ΠΉ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠ»ΠΎΡΡŒ имя «шСлл Π‘ΠΎΡ€Π½Π°Β» (Bourne shell). Π―Π·Ρ‹ΠΊ Π΅Ρ‘ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π±Ρ‹Π» основан Π½Π° Algol 68, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΏΠΎ Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌ возмоТности составлСния сцСнариСв: достаточно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΠΎΠ·Π΄Π½Π΅Π΅ вошСдшиС Π² Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ Ρ„ΠΎΠ½Π΄ классичСских UNIX-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ (ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ²ΡˆΠΈΡ…, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, BSD- ΠΈ GNU-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹), ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ shell-скрипты. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ этому ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΊΠ½ΠΈΠ³Π΅ РассСла Π‘Π΅ΠΉΠ΄ΠΆΠ° ΠŸΡ€ΠΈΡ‘ΠΌΡ‹ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² UNIX, ΠΈΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΊΠΎΠ»ΠΎ Ρ‚Ρ€ΠΈΠ΄Ρ†Π°Ρ‚ΠΈ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄, Π½ΠΎ Π² мСтодичСском ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ интСрСс ΠΈ ΠΏΠΎ сСй дСнь.

Однако, срСдства ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΏΠ΅Ρ€Π²ΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ шСллС Π‘ΠΎΡ€Π½Π° Π±Ρ‹Π»ΠΈ, мягко говоря, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹.. Π’ извСстной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сравнСния ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ для UNIX, Π½Π΅ΠΊΠΎΠ³Π΄Π° составлСнной Π‘Ρ€Π°ΠΉΠ°Π½ΠΎΠΌ Блэкмором (Brian Blackmore), Π²ΠΎ всСх Π΅Ρ‘ строках, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ интСрактивности, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ краснорСчивоС NO . Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π½Π΅ΠΉ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ с ΠΌΠ»Π°Π΄Ρ‹Ρ… линуксовых Π½ΠΎΠ³Ρ‚Π΅ΠΉ: Π½ΠΈ автодополнСния, Π½ΠΈ истории ΠΊΠΎΠΌΠ°Π½Π΄, Π½ΠΈ возмоТности рСдактирования ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½ΠΈ Π΄Π°ΠΆΠ΅ возмоТности ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²ΠΈΠ΄ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ.

Π”Π°, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ всё это постСпСнно ΠΈ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ – сначала Π² шСллС ΠšΠΎΡ€Π½Π° (

ksh
), ΠΈ Π² шСллС ΠΠ»ΡŒΠΌΠΊΠ²ΠΈΡΡ‚Π° (
ash
), Π·Π°Ρ‚Π΅ΠΌ изобильно Π²
bash'Π΅
(Π²ΠΎΠ·Ρ€ΠΎΠΆΠ΄Ρ‘Π½Π½ΠΎΠΌ шСллС Π‘ΠΎΡ€Π½Π°), ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²
zsh
, ставящСм Π½Π° сСгодняшний дСнь послСднюю Ρ‚ΠΎΡ‡ΠΊΡƒ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ. Но сСйчас-Ρ‚ΠΎ ΠΌΡ‹ находимся Π² Π΄Π°Π»Ρ‘ΠΊΠΈΡ… 70-Ρ… Π³ΠΎΠ΄Π°Ρ… ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° UNIX Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΠ΅Π½Π°Ρ‚ AT&T (см. Π³Π»Π°Π²Ρƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ) ΠΈ отправился Π² (ΠΏΠΎΡ‡Ρ‚ΠΈ) свободноС ΠΏΠ»Π°Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ унивСрситСтам АмСрики, Π•Π²Ρ€ΠΎΠΏΡ‹ ΠΈ ΡΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… стран Π²Ρ€ΠΎΠ΄Π΅ Австралии. ΠŸΡ€ΠΈΡˆΠ²Π°Ρ€Ρ‚ΠΎΠ²Π°Π²ΡˆΠΈΡΡŒ, Π² частности, ΠΈ Π² унивСрситСтС Π‘Π΅Ρ€ΠΊΠ»ΠΈ, ΡˆΡ‚Π°Ρ‚ ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΡ.

ПоявлСниС C-Shell

Π’ УнивСрситСтС Π‘Π΅Ρ€ΠΊΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΏΠΎ Π³Π»Π°Π²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Π² это врСмя вовсю разрабатывался собствСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ UNIX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ имя BSD4.4 ΠΈ ляТСт Π² основу всСх свободных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½ΠΎΠΊ бСрклианского сСмСйства. И ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΡ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² BSD, Π‘ΠΈΠ»Π» Π”ΠΆΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ обязаны Ρ‚Π°ΠΊΠΆΠ΅ тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ

vi
, ΡƒΠΆΠ΅ Π² 1979 Π³ΠΎΠ΄Ρƒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» свою ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΡƒΡŽ имя C-shell (ΠΈΠ»ΠΈ просто
csh
).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Если Π‘ΠΎΡ€Π½ ΠΏΡ€ΠΈ создании shell'ΠΏ опирался Π½Π° язык Алгол, Ρ‚ΠΎ Π”ΠΆΠΎΠΉ для языка своСго шСлла ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ» синтаксис, сходный с Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ языка Π‘ΠΈ, исконного для UNIX. Π­Ρ‚ΠΎ сдСлало ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ

sh
ΠΈ
csh
нСсовмСстимыми Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сцСнариСв. Но Π·Π°Ρ‚ΠΎ Π²
csh
Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ мноТСство ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… возмоТностСй – Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π±ΡƒΡ„Π΅Ρ€ истории, срСдства Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ Π΅Ρ‘ рСдактирования, настройка Π²ΠΈΠ΄Π° ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ, Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ схСмы настройки ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈ Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ шСлла... ΠšΠΎΡ€ΠΎΡ‡Π΅, всё Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΈΠ½ΠΊΠΎΡ€ΠΏΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ shell-совмСстимыС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ
bash
ΠΈ
zsh
. И Ρ‡Ρ‚ΠΎ Π½Ρ‹Π½Π΅ каТСтся Π½Π°ΠΌ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ любого шСлла – всё это Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ происходит ΠΈΠ·
csh
.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ C-shell ΠΎΡ‡Π΅Π½ΡŒ быстро стал Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π² Π‘Ρ€Π΅ΠΊΠ»ΠΈ BSD-систСмы. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΆΠ΅ коммСрчСских UNIX'ΠΎΠ² пошли Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ.

Как возроТдался шСлл

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сказано, ΠΏΠΎ своим ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ возмоТностям шСлл Π‘ΠΎΡ€Π½Π°, с ΠΎΠ΄Π½ΠΎΠΉ стороны, оставлял ΠΆΠ΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ. Π‘ΠΎ стороны ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Ρ… UNIX'ΠΎΠ² Π±Ρ‹Π» ΡƒΠΆΠ΅ C-Shell, сущСствСнно Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ. И ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρƒ Π½ΠΈΡ… появилась ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΎΠ³Π°Ρ‚ΠΈΡ‚ΡŒ /bin/sh срСдствами ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ воплощСния этой потрСбности стала ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠšΠΎΡ€Π½Π° (Korne Shell). Она сохранила ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с борновским шСллом Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ синтаксиса, ΠΎΠ΄Π½Π°ΠΊΠΎ привнСсла Π² Π½Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° удобство ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ – ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ послСдних ΠΈ послуТил C-Shell. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ksh Π»Ρ‘Π³ Π² основу стандарта POSIX, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ совмСстимых с Π½ΠΈΠΌ систСм.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ соотвСтствиС этому стандарту – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² отнСсСния Π½Π΅ΠΊΠΎΠ΅ΠΉ ОБ ΠΊ сСмСйству UNIX ΠΈΠ»ΠΈ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ…. Π’ частности, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ стандартизированный шСлл Π΄ΠΎΠ»ΠΆΠ΅Π½ (Π±Ρ‹Π» Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ) Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ исполнСнии общСсистСмных сцСнариСв ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ любой POSIX-систСмы. Π‘Π°ΠΌ ΠΆΠ΅ ΠΏΠΎ сСбС POSIX shell – нСкая мифичСская абстракция. Π‘Π»ΠΈΠΆΠ΅ всСго Π΅ΠΌΡƒ соотвСтствуСт

ash
, принятый Π² качСствС стандартной ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²ΠΎ FreeBSD (ΠΏΠΎΠ΄ условным ΠΈΠΌΠ΅Π½Π΅ΠΌ
/bin/sh
) ΠΈ Π² NetBSD (Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π²ΠΎ всяких ΠΌΠΈΠ½ΠΈ-дистрибутивах Linux).

Π¨Π΅Π»Π»Ρ‹ ΠΈ Π‘ΠΎΡ€Π½Π°, ΠΈ ΠšΠΎΡ€Π½Π° Π½Π΅ Π±Ρ‹Π»ΠΈ свободно распространяСмыми ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΠΈ Ρ‚ΠΎΡ‚, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π°ΠΊΠΈΡ… ОБ, ΠΊΠ°ΠΊ всС BSD ΠΈΠ»ΠΈ Linux, хотя свободная рСализация ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠšΠΎΡ€Π½Π° (

pdksh
) ΠΈ Π±Ρ‹Π»Π° создана. Однако, ΠΊΠ°ΠΊ ΠΈ Π΅Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, шСлл ΠšΠΎΡ€Π½Π°, ΠΎΠ½Π°, нСсколько Ρ€Π°Π·Π²ΠΈΠ²ΡˆΠΈΡΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Bourne shell, ΠΎΠ±Π»Π°Π΄Π°Π»Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ достиТСниями, ΡƒΠΆΠ΅ Π΄Π°Π»Π΅ΠΊΠΈΠΌΠΈ ΠΎΡ‚ ΠΈΠ΄Π΅Π°Π»Π°. Π‘Ρ‚ΠΎΠ»ΡŒ ΠΆΠ΅ слабы ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΈ Π²
ash
. И ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС ΠΈΠ· всСго sh-совмСстимого сСмСйства ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°
bash
(Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Β«Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π‘ΠΎΡ€Π½Π°Β», Β«Π·Π°Π½ΠΎΠ²ΠΎ Ρ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ шСлл» ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ), разработанная Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU.

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ

bash
Π² Π½Π΅ΠΌΠ°Π»ΠΎΠΉ стСпСни Π±Ρ‹Π»Π° обусловлСна Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ возмоТностями – ΠΎΠ½ Π°ΠΊΠΊΡƒΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π» всС достиТСния ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ мысли sh- ΠΈ csh-совмСстимых ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ, ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠ² ΠΊ Π½ΠΈΠΌ Π½Π΅ΠΌΠ°Π»ΠΎ собствСнных. И ΡƒΠΌΡƒΠ΄Ρ€ΠΈΠ²ΡˆΠΈΡΡŒ ΠΏΡ€ΠΈ этом ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с POSIX shell. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΅Π³ΠΎ собствСнныС особСнности (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Β«bash'ΠΈΠ·ΠΌΡ‹Β») Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этого стандарта. Однако для соотвСтствия ΠΎΠ½ΠΎΠΌΡƒ Π±Ρ‹Π» прСдусмотрСн Ρ€Π΅ΠΆΠΈΠΌ совмСстимости – Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ
bash
Π±Ρ‹Π» способСн ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стандартный POSIX shell.