맨위로가기

본 셸

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

본 셸은 1976년 벨 연구소의 스티븐 본이 개발한 셸로, PWB 셸을 대체하고 톰슨 셸을 개선하기 위해 설계되었다. 셸 스크립트를 필터로 사용하고, 제어 흐름과 변수를 포함한 프로그래밍 기능을 제공하며, 파일 디스크립터, 신호 관리, 문자열 길이 제한, 환경 변수 등을 제어하는 데 중점을 두었다. 이후 다양한 변형이 출시되었으며, Korn 셸, Bash, Z 셸 등 다른 셸에 영향을 미쳤다. 본 셸은 모든 상용 유닉스 시스템에서 표준으로 사용되며, C 셸에 비해 대화형 사용의 불편함, C 언어와의 문법적 차이, 식 평가 기능의 부재 등의 비판을 받기도 했다.

더 읽어볼만한 페이지

  • POSIX - 오픈 그룹
    오픈 그룹은 다양한 기술 공급업체, 구매자, 정부 기관을 포함하는 국제 컨소시엄으로, 표준 개발, 인증 프로그램 운영, TOGAF와 같은 IT 아키텍처 프레임워크 제공 및 UNIX 상표 권리 보유를 통해 개방형 IT 표준 개발 및 보급에 기여한다.
  • POSIX - 단일 유닉스 규격
    단일 유닉스 규격은 여러 회사의 소프트웨어 이식 비용 절감을 위해 시작된 운영 체제 인터페이스 표준이며, X/Open Company가 발표하고 POSIX 등과 통합되어 UNIX 인증 마크를 제공한다.
  • 1977년 소프트웨어 - BSD
    BSD는 캘리포니아 대학교 버클리에서 시작된 유닉스 계열 운영 체제로, 오픈 소스 라이선스인 BSD 라이선스를 통해 자유롭게 사용 및 배포되며, FreeBSD, OpenBSD, NetBSD 등 다양한 운영 체제로 파생되었다.
  • 1977년 소프트웨어 - OpenVMS
    OpenVMS는 DEC에서 개발한 멀티유저, 멀티프로세싱 가상 메모리 기반 운영 체제로, 고도의 안정성, 보안성, 확장성을 특징으로 하며 다양한 아키텍처, 클러스터링, 네트워킹, 프로그래밍 언어 및 개발 도구를 지원한다.
  • 유닉스 셸 - 유닉스 계열
    유닉스 계열은 유닉스 운영체제의 특징과 설계를 공유하는 운영체제들을 지칭하며, 유전적, 상표, 기능적 유닉스로 분류되고 macOS는 상표 유닉스이자 유전적 유닉스에 해당하며 리눅스는 기능적 유닉스의 대표적인 예이다.
  • 유닉스 셸 - C 셸
    C 셸은 C 프로그래밍 언어 스타일을 따른 유닉스 셸로, 대화형 사용에 편리한 기능들을 제공하지만 스크립트 언어로서의 한계와 문법적 결함으로 비판받기도 했으나 다른 셸에 영향을 주었다.
본 셸 - [IT 관련 정보]에 관한 문서
개요
버전 7 유닉스에서 사용되는 본 셸
종류유닉스 셸
개발자스티븐 본
발표일1979년
운영체제유닉스
상세 정보
작성 언어해당 없음 (정보 없음)
라이선스라이선스 논의 중

2. 역사

이 셸은 PWB 셸을 대체할 목적으로 설계되었다. 주요 목적은 다음과 같다:[22]


  • 셸 스크립트를 필터로 사용할 수 있도록 하기 위해
  • 제어 흐름변수를 포함한 프로그래밍 기능 제공
  • 모든 입출력 파일 서술자의 제어
  • 스크립트 내의 신호 관리 제어
  • 셸 스크립트를 해석할 때 문자열 길이의 제한을 없애기 위해
  • 매커니즘을 인용하는 문자열의 합리화 및 일반화
  • 환경 메커니즘


버전 7 유닉스: 초기 본 셸 매뉴얼 페이지. PDP-11 시뮬레이션과 SIMH


본 셸은 1976년에 벨 연구소의 스티븐 본이 개발을 시작했으며,[1] 1979년 버전 7 유닉스와 함께 대학에 배포되었다. 실행 파일 이름이 `sh`인 톰슨 셸을 대체하기 위한 것이었으며, 마셰이 셸보다 먼저 등장했다. 대화형 명령 인터프리터이자 스크립트 언어로 사용될 목적으로 제작되었으며, 구조화된 프로그램을 만드는 데 필요한 대부분의 기능을 포함하고 있다. 브라이언 커니핸롭 파이크가 저술한 ''유닉스 프로그래밍 환경''을 통해 셸 프로그래밍 언어로 널리 알려졌다.

본 셸은 AT&T에서 수년간 개선되었다. 다양한 변형은 출시된 AT&T 유닉스 버전에 따라 Version7, System III, SVR2, SVR3, SVR4 등으로 불렸다. 셸은 버전 관리가 되지 않아, 기능을 테스트하는 것이 유일한 식별 방법이었다.[6]

1979년 이후 본 셸 버전의 기능은 다음과 같다:[7]

버전연도기능
UNIX System III1981
SVR21984
SVR31986
SVR41989



데이비드 콘이 원본 본 셸 소스 코드를 기반으로 작성한 Korn shell(ksh)은 본 셸과 C 셸의 중간 형태였다.[8] 구문은 주로 본 셸에서 가져왔으며, 작업 제어 기능은 C 셸과 유사했다. ksh88로 알려진 오리지널 Korn Shell의 기능은 POSIX 셸 표준의 기반으로 사용되었다. pdksh로 알려진 ksh88의 클론은 OpenBSD의 기본 셸이다.

OpenSolaris에서 본 셸의 파생 버전이 오픈 소스로 공개되자, 이를 다른 자유 UNIX 계열 OS용으로 이식하는 [http://heirloom.sourceforge.net/sh.html Heirloom 프로젝트]가 시작되었다. 한편, Solaris 및 SVR4의 본 셸은 오리지널 ALGOL 68풍의 소스 코드가 아니다.

2. 1. 기원

이 셸은 PWB 셸을 대체할 목적으로 설계되었다.[22] 1976년에 벨 연구소의 스티븐 본이 개발을 시작했으며,[1] 실행 파일 이름이 `sh`로 같은 톰슨 셸을 대체하기 위한 것이었다. 본 셸은 마셰이 셸보다 먼저 등장했다. 1979년에 대학에 배포된 버전 7 유닉스 릴리스에서 출시되었다. 대화형 명령 인터프리터로 사용되지만, 스크립트 언어로도 사용될 의도로 제작되었으며, 구조화된 프로그램을 만드는 데 일반적으로 사용되는 대부분의 기능을 포함하고 있다.

브라이언 커니핸롭 파이크가 저술한 ''유닉스 프로그래밍 환경''이 출판되면서 인기를 얻었다.

본 셸의 주요 목표는 다음과 같다:[2]

  • 셸 스크립트를 필터로 사용할 수 있도록 하는 것.
  • 제어 흐름변수를 포함한 프로그래밍 기능을 제공하는 것.
  • 모든 입/출력 파일 디스크립터에 대한 제어.
  • 스크립트 내의 시그널 처리에 대한 제어.
  • 셸 스크립트를 해석할 때 문자열 길이 제한 없음.
  • 문자열 인용 메커니즘을 합리화하고 일반화하는 것.
  • 환경 메커니즘. 이를 통해 시작 시 컨텍스트를 설정하고 셸 스크립트가 명시적인 위치 매개변수를 사용하지 않고도 하위 스크립트(프로세스)에 컨텍스트를 전달할 수 있게 했다.


본 셸은 Mashey shell영어의 대체로 설계되었다.[13]

2. 2. 발전과 변형

이 셸은 PWB 셸을 대체할 목적으로 벨 연구소의 스티븐 본이 1976년부터 개발을 시작했다.[1] 1979년에 버전 7 유닉스 릴리스와 함께 대학에 배포되었다.[1] 톰슨 셸을 대체하기 위한 것이었지만, 마셰이 셸보다 먼저 등장했다.

본 셸은 대화형 명령 인터프리터로 사용될 뿐만 아니라, 스크립트 언어로도 사용될 의도로 제작되었으며, 구조화된 프로그램을 만드는 데 일반적으로 사용되는 대부분의 기능을 포함하고 있다. 브라이언 커니핸롭 파이크가 저술한 ''유닉스 프로그래밍 환경''은 셸을 튜토리얼 형태로 프로그래밍 언어로 제시한 최초의 상업적으로 출판된 서적이었다.

본 셸의 주요 목표는 다음과 같았다.[2]

  • 셸 스크립트를 필터로 사용할 수 있도록 하는 것.
  • 제어 흐름변수를 포함한 프로그래밍 기능을 제공하는 것.
  • 모든 입/출력 파일 디스크립터에 대한 제어.
  • 스크립트 내의 시그널 처리에 대한 제어.
  • 셸 스크립트를 해석할 때 문자열 길이 제한 없음.
  • 문자열 인용 메커니즘을 합리화하고 일반화하는 것.
  • 환경 메커니즘을 통해 시작 시 컨텍스트를 설정하고 셸 스크립트가 명시적인 위치 매개변수를 사용하지 않고도 하위 스크립트(프로세스)에 컨텍스트를 전달할 수 있도록 하는 것.


본 셸은 수년에 걸쳐 AT&T에서 개선되었다. 다양한 변형은 출시된 AT&T 유닉스 버전에 따라 Version7, System III, SVR2, SVR3, SVR4 등으로 명명되었다. 셸은 버전 관리가 되지 않았으므로, 기능을 테스트하는 것이 유일한 식별 방법이었다.[6]

1979년 이후 본 셸 버전의 기능은 다음과 같다:[7]

버전연도기능
UNIX System III1981
SVR21984
SVR31986
SVR41989



OpenBSD에서 ''pdksh'' (기본 셸)과의 상호 작용


데이비드 콘이 원본 본 셸 소스 코드를 기반으로 작성한 Korn shell(ksh)은 본 셸과 C 셸 사이의 중간 지점이었다.[8] 구문은 주로 본 셸에서 가져왔으며, 작업 제어 기능은 C 셸과 유사했다. ksh88로 알려진 오리지널 Korn Shell의 기능은 POSIX 셸 표준의 기반으로 사용되었다. pdksh로 알려진 ksh88의 클론은 OpenBSD의 기본 셸이다.

OpenSolaris에서 본 셸의 파생 버전이 오픈 소스로 공개되자, 이를 다른 자유 UNIX 계열 OS용으로 이식하는 [http://heirloom.sourceforge.net/sh.html Heirloom 프로젝트]가 시작되었다. 한편, Solaris 및 SVR4의 본 셸은 오리지널 ALGOL 68풍의 소스 코드가 아니다.

3. 특징

PWB 셸을 대체하기 위해 설계된 이 셸은 다음과 같은 주요 특징을 갖는다.[22]


  • 셸 스크립트를 필터로 사용할 수 있다.
  • 제어 흐름변수를 포함한 프로그래밍 기능을 제공한다.
  • 모든 입출력 파일 서술자를 제어한다.
  • 스크립트 내에서 신호 관리를 제어한다.
  • 셸 스크립트 해석 시 문자열 길이 제한이 없다.
  • 문자열 인용 매커니즘을 합리적이고 일반화하였다.
  • 환경 매커니즘을 제공한다.


본 셸 자체는 강력한 기능을 가지고 있지 않지만, 유닉스 시스템의 기본 프로그램을 조합하여 사용하면 강력한 스크립트를 만들 수 있다. 예를 들어, 다음 스크립트는 현재 시간에 따라 아침, 점심을 구분하여 출력한다.



#!/bin/sh

hour=`date +%H`

if [ $hour -lt 10 ]; then

echo "아침."

fi



본 셸은 문장의 참/거짓을 판별하는 기능이 없으며, 외부 프로그램을 통해 이를 수행한다. 위 예제에서는 `/bin/[` 프로그램이 `$hour`에 저장된 현재 시간과 10을 비교하는 연산자 `-lt` (lower than)를 사용하여 이 역할을 수행한다.

버전 7 유닉스 본 셸의 특징은 다음과 같다:

  • 파일 이름을 사용하여 스크립트를 명령으로 호출할 수 있다.
  • 대화형 또는 비대화형으로 사용할 수 있다.
  • 명령을 동기 또는 비동기 방식으로 실행할 수 있다.
  • 입력 및 출력 리디렉션과 파이프라인을 지원한다.
  • 내장 명령 집합을 제공한다.
  • 흐름 제어 구문 및 따옴표 기능을 제공한다.
  • 타입 없는 변수를 사용한다.
  • 로컬 및 전역 변수 범위를 제공한다.
  • 실행 전 스크립트 컴파일이 필요하지 않다.
  • `goto` 기능이 없어 코드 구조 변경이 필요할 수 있다.
  • 백틱 (` `)을 사용한 명령 대체를 지원한다.
  • `<<`를 사용한 히어 문서로 스크립트 내에 입력 텍스트 블록을 포함할 수 있다.
  • `for ~ do ~ done` 루프 (특히 `$*`를 사용한 인수 반복) 및 `for ~ in ~ do ~ done` 루프를 지원한다.
  • `case ~ in ~ esac` 선택 메커니즘 (주로 인수 구문 분석에 사용)을 제공한다.
  • `sh`는 키워드 매개변수 및 내보낼 수 있는 변수를 사용한 환경 변수를 지원한다.
  • 입력 및 출력 제어와 정규 표현식 표현식 일치 기능을 위한 강력한 조항을 포함한다.


본 셸은 파일 디스크립터 `2>`를 오류 메시지에 사용하는 관례를 처음 도입하여, 오류 메시지를 데이터와 분리하고 스크립트 제어를 용이하게 했다.

스티븐 본은 케임브리지 대학교에서 작업했던 ALGOL 68C 컴파일러[3]의 경험을 바탕으로 코딩 스타일을 구성했다. ALGOL 68의 `if ~ then ~ elif ~ then ~ else ~ fi`, `case ~ in ~ esac`, `for/while ~ do ~ od` ( `od` 대신 `done` 사용) 절을 본 셸 구문에 재사용했다. 또한, v7 셸은 C로 작성되었지만, 본은 매크로[4]를 활용하여 C 소스 코드에 ALGOL 68의 스타일을 부여했다. 이러한 매크로는 국제 난해한 C 코드 콘테스트 (IOCCC)[5]에 영감을 주었다.

1979년 이후 AT&T에서 본 셸은 여러 버전으로 개선되었다. 주요 버전별 특징은 다음과 같다:[7]

버전특징
System III 셸 (1981)
SVR2 셸 (1984)
SVR3 셸 (1986)
SVR4 셸 (1989)


4. 다른 셸과의 관계



데이비드 콘이 원본 본 셸 소스 코드를 기반으로 작성한 콘 셸(ksh)은 본 셸과 C 셸 사이의 중간 지점이었다.[8] 구문은 주로 본 셸에서 가져왔으며, 작업 제어 기능은 C 셸과 유사했다. ksh88로 알려진 오리지널 콘 셸의 기능은 POSIX 셸 표준의 기반이 되었다. ksh93이라는 최신 버전은 2000년부터 오픈 소스로 제공되었으며 일부 리눅스 배포판에서 사용된다. ksh88의 클론인 pdksh도 있으며, OpenBSD의 기본 셸이다.

Z 셸은 1990년에 폴 팔스타드에 의해 개발되었으며, 배시, ksh, tcsh의 일부 기능을 포함한 확장된 본 셸이다.

4. 1. C 셸 (csh)

빌 조이C 셸의 저자로서, 본 셸이 대화형 사용에 적합하지 않다고 비판했는데,[10] 스티븐 본 본인도 C 셸의 우수성을 인정하는 부분이다. 하지만 본은 자신의 셸이 스크립팅에 더 뛰어나고 모든 유닉스 시스템에서 사용할 수 있다고 주장했으며,[11] 톰 크리스찬센 또한 C 셸이 스크립팅 및 프로그래밍에 적합하지 않다고 비판했다.[12]

본 셸에서 파생된 C 셸(csh)은 4.1BSD에서 배포되었으며, BSD 커널의 "잡 제어" 기능을 도입했다. 잡 제어는 대화식으로 프로그램을 중지하거나 나중에 다시 시작하는 기능이다. C 셸이 명령 인터프리터로 인기를 얻은 것은 이 기능 때문이었다. 또한 C 셸은 C 언어 스타일의 문법을 채택하여 본 셸과 호환되지 않게 되었다. 잡 제어 기능은 나중에 본 셸에도 도입되었으며, 이후의 많은 셸에서도 채택되었다.

4. 2. Almquist 셸 (ash)

본 셸은 역사적인 CSRG BSD 릴리스에서 사용되었던 것과 관련하여 저작권 문제가 발생했다. 이에 따라, 케네스 알름퀴스트는 Almquist 셸(알름퀴스트 셸)로 알려지고 BSD 라이선스 하에 배포되는 본 셸의 클론을 개발했다. 이는 오늘날 일부 BSD 계열 운영체제와 메모리 제약적인 환경에서 사용되고 있다. Almquist Shell은 리눅스로 포팅되었으며, 이 포팅은 Debian Almquist shell 또는 dash로 이름이 변경되었다. 이 셸은 Bash에 비해 작은 메모리 사용량으로 표준 `sh` (그리고 최신 계열에서는 POSIX 표준 `sh`) 스크립트의 빠른 실행을 제공한다. 이는 `sh`에서 실행되도록 설계된 스크립트에서 발생하는 bashism – Bash 중심적인 가정들을 드러내는 경향이 있다.

4. 3. Bash (Bourne Again Shell)

PWB 셸을 대체할 목적으로 설계되었다.[22]

주요 목적들은 다음과 같다.[22]

  • 셸 스크립트를 필터로 사용할 수 있게 하기 위해
  • 제어 흐름변수를 포함한 프로그래밍 가능성을 제공하기 위해
  • 모든 입출력 파일 서술자의 제어
  • 스크립트 내의 신호 관리 제어
  • 셸 스크립트를 해석할 때 문자열 길이의 제한을 없애기 위해
  • 매커니즘을 인용하는 문자열의 합리화 및 일반화
  • 환경 매커니즘.


본 셸 자체의 기능은 비교적 강력하지 않지만, 유닉스 시스템의 기본 프로그램을 조합하여 사용하면 매우 강력한 기능을 하는 스크립트를 만들 수 있다. 본 셸 자체로는 문장의 참 거짓을 구분해 주는 메커니즘을 갖고 있지 않으며, 대신에 이것은 외부 프로그램이 해 주어야 한다.

배시(Bash)는 GNU 프로젝트를 위해 1989년에 개발되었으며, 본 셸, csh, ksh의 기능을 통합했다. 이는 POSIX를 준수하도록 설계되었다. 배시는 이름에서 알 수 있듯이 본 셸을 기본으로 C 셸과 콘 셸의 기능을 도입했으며, GNU 프로젝트의 일부로 개발되었다. macOS, Cygwin, 많은 리눅스 배포판에서 기본 셸이다.

4. 4. 기타 셸


  • 배시GNU 프로젝트를 위해 1989년에 개발되었으며, 본 셸, csh, ksh의 기능을 통합했다. 이는 POSIX를 준수하도록 설계되었다.[1]
  • rc는 벨 연구소에서 en에 의해 en의 sh를 대체하기 위해 만들어졌다. Plan 9 from Bell Labs의 기본 셸이며, en의 일부로 UNIX로 이식되었다.[1]
  • Z 셸은 1990년에 폴 팔스타드에 의해 개발되었으며, 배시, ksh, tcsh의 일부 기능을 포함한 다양한 개선 사항을 갖춘 확장된 본 셸이다.[1]


본 셸에서 파생된 C 셸(csh)은 4.1BSD에서 배포되었으며, BSD 커널의 "잡 제어" 기능을 도입했다. 잡 제어는 대화식으로 프로그램을 중지하거나 나중에 다시 시작하는 기능이다. C 셸이 명령 인터프리터로 인기를 얻은 것은 이 기능 때문이었다. 또한 C 셸은 C 언어 스타일의 문법을 채택하여 본 셸과 호환되지 않게 되었다. 잡 제어 기능은 나중에 본 셸에도 도입되었으며, 이후의 많은 셸에서도 채택되었다.[1]

이후 데이비드 콘이 개발한 콘 셸(ksh)은 본 셸과 C 셸의 중간 형태이며, 문법은 거의 본 셸과 동일하고, 잡 제어 기능을 C 셸에서 가져왔다. 초기 콘 셸(ksh88)의 기능은 POSIX 셸 표준의 기반이 되었다. 그 후 ksh93이 2000년에 오픈 소스화되었으며, 여러 리눅스 배포판에서 사용되고 있다. ksh88의 클론인 pdksh도 있으며, OpenBSD의 기본 셸이다.[1]

배시(''Bourne Again Shell'')는 이름에서 알 수 있듯이 본 셸을 기본으로 C 셸과 콘 셸의 기능을 도입했으며, GNU 프로젝트의 일부로 개발되었다. macOS, Cygwin, 많은 리눅스 배포판에서 기본 셸이다.[1]

rc는 벨 연구소의 Tom Duff|톰 더프영어가 Version 10 Unix|Version 10 Unix영어에서의 sh의 후계로 개발했다. Plan 9 from Bell Labs에서는 기본 셸로 사용되고 있다. Plan 9 from User Space|Plan 9 from User Space영어의 일부로 UNIX에도 이식된 적이 있다.[1]

과거 CSRG의 BSD 릴리스에서도 사용되었던 본 셸은 저작권 문제에 얽혀 있었다. 그래서 케네스 알름퀴스트가 알름퀴스트 셸이라고도 불리는 본 셸의 클론을 개발했다. 이는 BSD 라이선스로 제공되었으며, 현재도 BSD 계열에서 메모리 용량이 적은 경우 등에 사용되고 있다. 리눅스에도 이식되어 데비안 알름퀴스트 셸 또는 dash라고 불린다. 메모리 사용량이 적기 때문에 셸 스크립트 실행이 배시보다 빠르다는 특징이 있다.[1]

5. 비판

본 셸은 C 셸에 비해 다음과 같은 단점이 있다고 비판받아 왔다.[18][19]


  • 대화형으로 사용할 경우, 본 셸은 사용하기에 편리하지 않다. C 셸에는 히스토리 기능, 별칭 기능, 작업 제어 기능 등이 있어 빠르고 쉽게 조작할 수 있다.
  • 유닉스 시스템의 대부분은 C 언어로 작성되었지만, 본 셸의 문법은 C 언어와 전혀 유사하지 않고 ALGOL과 유사하다.
  • 을 평가하는 기능이 없다. 단순한 식이라도 외부의 `test`와 `expr` 유틸리티를 사용해야 식을 평가할 수 있다.

참조

[1] 웹사이트 Stephen Bourne Keynote for BSDCan 2015 https://www.bsdcan.o[...]
[2] 웹사이트 The A-Z of Programming Languages: Bourne shell, or sh http://www.computerw[...] 2009-03-06
[3] 기술 보고서 A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 http://www.cs.dartmo[...]
[4] 웹사이트 mac.h – Macros used by Bourne to structure C like Algol68C http://minnie.tuhs.o[...] AT&T Corporation 1979-01-12
[5] 웹사이트 The IOCCC FAQ – Q/A: How did the IOCCC get started? http://www.ioccc.org[...] ioccc.org
[6] 웹사이트 what shell is this http://www.in-ulm.de[...]
[7] 웹사이트 traditional Bourne shell family / history and development http://www.in-ulm.de[...]
[8] 논문 ksh - An Extensible High Level Language https://www.usenix.o[...] USENIX Association 1994-10-26
[9] 웹사이트 Schily Bourne Shell - A modern enhanced and POSIX compliant Bourne Shell source maintained by Jörg Schilling. http://schilytools.s[...]
[10] 서적 An Introduction to the C shell http://www.kitebird.[...]
[11] 뉴스 The Unix Shell https://archive.org/[...] 1983-10-01
[12] 웹사이트 Csh Programming Considered Harmful http://www.faqs.org/[...] 1995-09-28
[13] 뉴스 The A-Z of Programming Languages: Bourne shell, or sh http://www.computerw[...] Computerworld 2009-03-01
[14] 웹사이트 mac.h - Macros used by Bourne to structure C like Algol68C http://minnie.tuhs.o[...] AT&T 1979-01-12
[15] 웹사이트 The IOCCC FAQ - Q/A: How did the IOCCC get started? http://www.ioccc.org[...] www.ioccc.org 2004-01-01
[16] 웹사이트 Bourne Shell release testing script from Sven Mascheck http://www.in-ulm.de[...]
[17] 웹사이트 History of the Bourne Shell family http://www.in-ulm.de[...]
[18] 서적 An Introduction to the C shell http://www.kitebird.[...]
[19] 웹사이트 Introduction to the Unix shell history http://www.softpanor[...] 2009-08-15
[20] 서적 UNIX C SHELL フィールドガイド パーソナルメディア株式会社 1987-10-15
[21] 웹사이트 Rc — The Plan 9 Shell http://doc.cat-v.org[...]
[22] 뉴스 The A-Z of Programming Languages: Bourne shell, or sh http://www.computerw[...] 컴퓨터월드 2009-03-01



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com