과거는 그런 식으로 작동하지 않았습니다.

과거는 그런 식으로 작동하지 않았습니다.

~ 안에다른 스레드exit나는 , test또는 같은 이름을 가진 프로그램(셸과 같은 OS 사용자 인터페이스의 일부가 아닌)은 모두 help멍청하다고 뻔뻔하게 말했습니다. 나는 이러한 공통 이름이 일반적으로 명령 셸이나 핵심 OS 유틸리티인 최상위 사용자 인터페이스에 예약되어야 함을 암시하고자 했습니다.

사용자 schily는 이것이 help70년대부터 Unix의 필수적인 부분이었던 sccs 버전 제어 시스템의 명령이라고 말했습니다. sccs는 실제로단일 유닉스 사양에 포함되어 있습니다.

sccs의 온라인 문서는 모호한 것 같습니다. 대부분의 페이지는 help로 호출되는 sccs 하위 명령으로 나열됩니다 sccs help <topic>. 그런 다음/usr/bin/sccshelp명령. 하지만다른 페이지실제로 전용 /usr/ccs/bin/help.

나는 sccs 사용자가 40년 동안 많은 Unix 설치의 일부였던 /usr/ccs/bin/경로에 있을 것이라고 가정합니다 1 . 이 경우 명령 이름을 선택하는 것이 유감스럽더라도 sccs는 서열을 가지며 bash는 내장 bash-help 등을 호출했어야 한다고 주장합니다.help

그렇다면 경로에 ( sccs) 명령이 있는 것이 일반적이었나요?help


1 이상하게 들리네요.

답변1

과거는 그런 식으로 작동하지 않았습니다.

당신은 당시에는 그렇지 않았던 다소 결함이 있는 현대 모델을 구입하고 있습니다.

하지만 나는 웃으며 “땀 흘리지 말고 훈련시켜줄게. 처음으로 배우는 명령은 HELP"이며 콘솔 터미널에 입력을 진행했습니다. 따라서 데이터 센터 관리자, 교대 근무자 및 8일 근무 작업자는 LA100이 일반적인 소개 텍스트를 웅얼거리는 것을 지켜보았습니다. 그것이 끝나자 그들은 기대하는 얼굴로 나를 돌아보았고 나는 무뚝뚝하게 말했다. “이것이 당신의 가장 중요한 명령입니다!”

교대 감독관이 앞으로 나서서 약 1분 동안 본문을 연구했습니다. 그런 다음 그는 매우 당황한 표정으로 돌아서서 “그것을 무엇에 사용합니까?”라고 물었습니다. 한숨을 쉬다.

— Mike O'Brien(The Aerospace Corporation) <neat.ai.toronto.edu!pyramid!verdix!ogccse!tektronix!aerospace.aero.org!sequent!aero!obrien> 통해 <[이메일 보호됨]> (1989-03-01).VAXen, 내 아이들아, 단지 어떤 곳에 속하지 않는 것 뿐이야. Rec.유머.웃긴.

오히려 유명한 것은 유닉스에는 초보자를 위한 간단한 도움말 명령이 제공되지 않았다는 것입니다. 이것은 Bourne Again 쉘 작성자에 의해 한 번만 채워진 것이 아니라 여러 번 메워진 구멍(온라인 토론 포럼에서 많이 논의됨)이었습니다. Mortice - Kern 은 help. AT&T System 5 릴리스 3.2에도 다음 과 같은 명령이 있습니다.helpfilehelpindexhelp

$ 도움
도움말:UNIX 시스템 온라인 도움말

        선택사항 설명
                스타터: 일반 정보
                l 찾기:키워드가 포함된 명령 찾기
                u 사용법: 명령에 대한 정보
                g 용어집: 용어 정의
                r 파일이나 명령으로 리디렉션
                q 종료
       선택사항 입력

help이것이 AT&T Unix에 있었다는 것은 오히려 SCCS 명령을 대체하는 것이 불법적이거나 Bourne Again 쉘 작성자가 부적절하다는 생각에 kibosh를 가하는 것입니다 . 하지만 더 많은 것이 있습니다.

우리는실제로 사용 PATH.

# PATH는 초기 쉘 PATH 변수를 설정합니다.
#
#PATH=/usr/bin:/etc:/bin:/boot/grub:/boot/grup/bin:/boot/solaris/bin:/sbin:\
/usr/openwin/bin:/usr/5bin://usr/X11/bin:/usr/apache/bin:/usr/apache2/bin:\
/usr/appserver/bin:/usr/ccs/bin:/usr/dt/bin:/usr/j2se/bin:usr/local/bin:\
/usr/oasys/bin:/usr/pgadmin3/bin:/usr/proc/bin:/usr/sadm/bin:\
/usr/sadm/admin/bin:/usr/sadm/sysadm/bin:/usr/sbin:/usr/sfw/bin:\
/usr/sfw/i386-sun-solaris2.10/bin:/usr/sfw/sbin:/usr/snadm/bin:\
/usr/sunvts/bin:/usr/ucb:/usr/ucb:/usr/vmsys/bin:/usr/xpg4/bin:\
/usr/xpg6/bin
login.dfl. 썬마이크로시스템즈.. 2004-06-25.

현대 모델의 한 부분은 모든 것이 하나의 거대한 디렉토리에 저장된다는 것입니다.다니엘 J. 번스타인의/command또는 아치 리눅스의 /usr/bin. 물론 이것은 이름이 다른 명령으로 인해 모든 문제를 야기합니다 (다른 모델에서는 및 fastboot에 있는 것으로 구별됩니다 ). 하지만 그 당시에는 그런 모델이 아니었습니다.bin/sbin/

모델은 다음과 같이 예시됩니다.ls내가 논의한 명령 의 여러 변형그리고 "와 같은 질문으로Nexenta bash 스크립트는 /usr/bin/sed 대신 /usr/sun/bin/sed를 사용합니다.". 있습니다.전체 부하명령 디렉터리의 목록과 환경 변수 값에 나열하기로 선택한 하위 집합 및 PATH순서는 무엇인지 결정합니다.운영체제의 성격그 사람이 본다.

명령 검색 경로에는 다음과 같은 항목이 포함될 수 있으며 어느 정도까지 포함될 수 있습니다.

  • /bin- 전통 적이고 /usr/bin/이전의 공식 표준화, 일반 도구 세트 포스트정식표준화 관점에서 볼 때,System V 인터페이스 정의그리고X/Open 이식성 가이드버전 3
  • /sbin/usr/sbin/— 시스템 관리 도구
  • /etc//usr/etc/— 더 많은 시스템 관리 도구(예, 버지니아, 실행 파일이 한 번 들어갔습니다 /etc/.)
  • /5bin/usr/5bin/— AT&T Unix System 5 호환 도구와의 System V(예: 5) 호환성 디렉터리
  • /usr/ucb/— BSD 호환 도구가 포함된 UCB(예: BSD) 호환 디렉터리
  • /usr/mbin/— 멀티바이트 문자 집합이 가능한 /usr/bin도구 변형
  • /usr/rbin/— 관리자가 일부 "제한된" 쉘에 사용할 수 있는 도구
  • /usr/lbin/— 로컬에 설치된 도구,/usr/local/bin/
  • /usr/amdahl/bin/— 운영 체제 공급업체 도구, 보다 일반적 으로 유사점을 도출할 수 있는 /usr/sun/bin/형식을 취함/usr/${OEM}/bin/usr/local/bin
  • /usr/games/— 게임
  • /usr/ccs/bin— 여러분이 관찰한 대로 다양한 개발자 도구
  • /usr/xpg4/bin/— 명령이 지시하는 방식으로 동작하는 명령이 있는 디렉토리X/Open 이식성 가이드문제 4
  • /usr/xpg6/bin/— 개념적으로 지시된 방식으로 동작하는 명령이 있는 디렉토리X/Open 이식성 가이드Issue 6, 더 적절하게는 POSIX.1:2001 또는단일 유닉스 사양버전 3
  • /opt/sfw/bin/— 현재는 Sun에서 제공하는 추가 유틸리티 CD를 설치하여 생성됩니다.SunFreeware Companion CD
  • /opt/csw/bin/오픈CSW및 Blastwave 도구
  • /opt/SUNWspro/bin/— Sun Workshop(현재 Oracle Developer Studio로 알려짐) 도구 모음의 명령으로 SUNWSun의 (원래) 증권 거래소 티커 코드이며 spro이전 제품 이름 SunPro를 나타냅니다.
  • /usr/local/bin//opt— 하위 디렉터리나 CSW를 사용하지 않는 제3자가 제공하는 항목

Sun/Oracle 운영 체제와 그 오픈 소스 파생물은 아마도 그러한 다중 성격 운영 체제의 가장 극단적인 예일 것입니다. (Oracle은 이후 /usr/ucb및 등 을 포함한 여러 디렉토리를 삭제했습니다 /usr/ccs.) 그러나 앞서 언급한 디렉토리 중 일부는 AIX 및 기타 디렉토리에서 가져온 것입니다. /usr/amdahl/bin예를 들어 UTS 출신입니다.

주어진 명령 이름에서 어떤 프로그램을 실행했는지는 어떤 성격을 선택했는지에 따라 달라졌습니다. 주어진 명령 이름에 대해 단 하나의 프로그램만 있어야 한다는 생각은 어리석은 생각이었습니다. 결국 같은 이름의 명령을 구별하는 것이 무엇 PATH이었는가?~을 위한.

엄격한 우선순위에 대한 개념은 없었습니다.

많은 명령이 매우 빠르게 살았다가 죽었습니다. 예를 들어 Bill Joy는 iul의 전신으로 명령을 만들었습니다 ul. BSD에도 한때 greek명령이 있었습니다.

명령이 영원히 굳어지고 쉘 내장 기능 및 기타 기능을 제외하고 이름을 소유한다는 생각은 명령 세트의 회전율을 고려할 때 상당히 이질적이었습니다.

우선,sh 그 자체10년 조금 넘는 시간 동안 Thompson, Mashey, Bourne 및 Korn 포탄이 다양하게 변했습니다. Thompson 쉘의 외부 if명령이 Bourne 쉘을 키워드로 사용하지 못하게 한다는 생각은 if물론 우스꽝스럽습니다.

추가 내장 명령을 활성화하기 위한 (2005년 이후, ksh93q) AT&T Korn 쉘의 메커니즘( /opt/ast/bin값에 를 포함 PATH)은 둘 다 내장 명령이 동일한 이름의 외부 명령을 대체할 수 있다는 개념을 지원합니다.그리고성격을 통제하기 위해 사용할 것으로 예상되는 아이디어와 관련이 있습니다 PATH. ( ast참고로 AT&T Software Technology의 약자입니다.)

추가 읽기

  • 미국 전화 및 전신 회사. "UNIX 시스템 사용자를 위한 기본 사항: help명령".Unix System V, 릴리스 3.2: 사용자 안내서. 프렌티스 홀. 1989. pp. 2–23 et seq.
  • David Fiedler, Bruce H. Hunter, Stephen G. Kochan 및 Patrick H. Wood(1986). " /usr— 미스터리 디렉토리".UNIX 시스템 관리. Hayden Book Company, ISBN 9780810462892. 54페이지 이하 참조.
  • XPG.표준, 환경 및 매크로. Oracle Solaris 매뉴얼 페이지. 신탁. 2014.
  • XPG4.표준, 환경 및 매크로. SunOS 매뉴얼 페이지. 신탁. 2004.
  • 마이클 R. 올트(1996). UNIX 시스템 관리자의 동반자. 와일리. ISBN 9780471111443.
  • if.매뉴얼. Etsh 프로젝트.
  • ksh93 쉘 스크립트의 이상한 점("command -p mkdir t" 실패)
  • https://news.ycombinator.com/item?id=7278408
  • 조나단 드 보인 폴라드(2017).개선된 매뉴얼 페이지ul. 제안.

답변2

/usr/bin/helpPWB/UNIX 및 System III에는 SCCS, 주로 SCCS 오류 메시지에 대한 도움말을 제공하는 것이 있었습니다 .확장 가능개별 사이트에서는 다른 명령이나 오류 메시지에 대한 도움말을 추가할 수 있습니다.

도움말(1)시스템 III에서:

.SH NAME
help \- ask for help
.SH SYNOPSIS
.B help
[\^args\^]
.SH DESCRIPTION
.I Help\^
finds information to explain a message from a command or explain the use of
a command.
Zero or more arguments may be supplied.
If no arguments are given,
.I help\^
will prompt for one.
.PP
The arguments may be either
message numbers (which normally appear in parentheses following messages)
or command names,
of one of the following types:
.PP
.RE 
.RS 10
.TP 10
type 1
Begins with non-numerics, ends in numerics.
The non-numeric prefix is usually an abbreviation for the program or
set of routines which produced the message
(e.g., \fBge6\fP, for message 6 from the
.I get\^
command).
...
.SH FILES
.PP
.TP 20
/usr/lib/help
directory containing files of message text.

유쾌한 자기 참조로 마무리됩니다.

.SH DIAGNOSTICS
Use
.IR help (1)
for explanations.

/usr/src/cmd/sccs/sccs.mk다음이 있었습니다:

INSDIR = /usr/bin
#   Directory where executable SCCS commands are stored

help:   help.o $(LIBDIR)/comobj.a
    $(CC) $(LDFLAGS) -o help help.o $(LIBDIR)/comobj.a $(LIBES)
    cp $(TESTDIR)/help $(INSDIR)


HELPDIR = help.d
#   Directory containing SCCS help files.
PUB_HELPLIB = /usr/lib/help
#   Public directory where help files are stored.

helpfiles:
    -mkdir $(PUB_HELPLIB)
    cp $(HELPDIR)/ad $(PUB_HELPLIB)/ad
    cp $(HELPDIR)/bd $(PUB_HELPLIB)/bd
    ...

답변3

SCCS는 이미 1972년에 작성되었지만(SCCS가 현재 46주년이 됨) 1977년 2월 18일에 발표된 릴리스 4.0 이전에는 SCCS에 대한 정보를 얻기가 어렵습니다. SCCS 릴리스 4.0에는 확실히 명령이 포함되었습니다 help. 이전 SCCS 개정판은 현재 SCCS와 호환되지 않는 이진 기록 파일 형식을 사용했습니다.

bashSCCS에 대해 더 자세히 쓰기 전에 간략한 정보를 제공하겠습니다 .

bashksh93표준에 나열되지 않은 내장 기능에 대한 메소드를 구현하는 대신 많은 멍청한 내장 기능을 구현하므로 사용자에게 친숙하지 않은 쉘입니다 . 설정할 수 있는 ksh93내장 기능을 구현합니다.builtin검색 경로내장용. 이러한 멍청한 내장 기능의 주요 문제점은 가장 선호도가 높은 것으로 발견되고 쉽게 비활성화할 수 없다는 것입니다. 그러나 확장된 ksh93 내장 기능은 일반적으로 기본적으로 전혀 발견되지 않습니다. 왜냐하면 사용자가 PATH다음을 포함하는 설정을 요구하기 때문입니다./usr/ast/bin.

SCCSUNIX 동작 으로 돌아가기 :

UNIX의 모든 개발자는 일반적으로/usr/ccs/빈PATH그 사람 의CCS와 비슷한 것을 의미한다C 컴파일 시스템. 이 디렉토리에는 다음과 같은 프로그램이 들어 있습니다.cc, as, size, strip, nm, m4, make, SCCS, yacc...

/usr/bin/sccshelpOracle은 Solaris Linux와 유사하게 만들려고 노력하면서 도입했으며 많은 UNIX 사람들은 이 변경 사항을 좋아하지 않습니다.

SCCS의 공식 온라인 문서를 확인하려면 다음을 확인하는 것이 좋습니다.

http://sccs.sourceforge.net/

특별히:http://sccs.sourceforge.net/man/index.html

지난 12년 동안 대대적인 재작성이 있었습니다. 그런데 그 이후로는 제가 관리자입니다.

원래 SCCS 하위 시스템은 AT&T의 Marc J. Rochkind가 작성했지만 BSD의 Eric Allman은명령 sccs1980년에 SCCS 사용을 더 단순하게 만들었습니다.

따라서 AT&T 세계에 살고 있다면 모든 명령은/usr/ccs/빈BSD 세계에 있는 동안 당신은 전화를 겁니다.sccs <subcommand>

귀하의 질문에 답변:예, 개발자가 PATH에 sccs help 명령을 사용하는 것이 일반적입니다.SCCS 프런트엔드 명령이 sccs일반적으로 사용되지만/usr/빈

관련 정보