존재하다다른 스레드exit
test
나는 이라는 이름의 프로그램 이나 쉘과 같은 운영 체제 사용자 인터페이스의 일부가 아닌 프로그램은 어리석은 것이라고 거만하게 말하고 싶습니다 help
. 내가 의미하는 바는 이러한 일반 이름이 최상위 사용자 인터페이스, 일반적으로 명령 셸 또는 핵심 운영 체제 유틸리티용으로 예약되어야 함을 의미하는 것입니다.
사용자 schily는 이것이 help
1970년대 이후 Unix의 필수적인 부분이었던 sccs 버전 제어 시스템에 대한 명령이라고 말했습니다. sccs는 실제로Single Unix 사양에 포함되어 있습니다.
sccs에 대한 온라인 문서는 모호한 것 같습니다. 대부분의 페이지는 help
이라고 불리는 sccs 하위 명령으로 나열됩니다 sccs help <topic>
. 그럼 거기에/usr/bin/sccshelp
주문하다. 하지만다른 페이지전문화된 것들은 실제로 나열되어 있습니다 /usr/ccs/bin/help
.
나는 sccs 사용자가 /usr/ccs/bin/
그 경로에 있을 것이라고 가정하고 있으며, 이는 help
40년 동안 많은 Unix 설치의 일부였습니다 1 . 이 경우 명령 이름 선택이 아쉽더라도 sccs는 서열을 가지며 bash는 내장된 bash-help 등을 호출해야 한다고 생각합니다.
그러면 경로에 ( sccs
) 명령이 자주 있습니까?help
1 이상하게 들리네요.
답변1
과거에는 그렇지 않았습니다.
당신은 몇 가지 결함이 있는 최신 모델을 구입하고 있지만 당시에는 그렇지 않았습니다.
하지만 나는 웃으며 “힘내지 마라, 내가 훈련시켜 줄게”라고 말했다. 처음 배우는 명령은— Mike O'Brien(항공우주) <neat.ai.toronto.edu!pyramid!verdix!ogccse!tektronix!aerospace.aero.org!sequent!aero!obrien> 작성자: <[이메일 보호됨]> (1989-03-01).VAXen, 내 아이들은 어떤 곳에 속하지 않아. 다큐멘터리, 유머러스하고 흥미롭습니다.HELP
“그리고 콘솔 터미널에 쳐봐. 그러니까 데이터센터 매니저, 시프트 슈퍼바이저, 에잇데이”다. 운영자 LA100이 윙윙거리는 것을 보고 평소의 소개 문자를 보낸 후 그들은 나를 기대하는 눈빛으로 바라보았고 나는 친절하게 말했습니다. "이것이 당신의 가장 중요한 명령입니다! "교대 감독관이 앞으로 나서서 약 1분 동안 본문을 연구했습니다. 그런 다음 그는 돌아서서 의아해하는 표정으로 물었습니다. "그것을 무엇에 사용합니까?" 한숨.
우리 모두 알고 있듯이 Unix는 초보자를 위한 간단한 도움말 명령을 제공하지 않습니다. 이것은 Bourne Again 쉘의 작성자가 한 번이 아니라 여러 번 메운 구멍(온라인 토론 포럼에서 많이 논의됨)입니다. Mortice-Kern은 를 사용하기 help
위해 doco에서 검색할 수 있는 명령을 제공합니다 . AT&T System 5 Release 3.2에는 다음과 같은 명령도 있습니다.helpfile
helpindex
help
$ 도움 도움말:UNIX 시스템 온라인 도움말 옵션 설명 n 시작하기: 일반 정보 llocate: 키워드가 포함된 명령 찾기 u 사용법: 명령에 대한 정보 g 용어집: 용어 정의 r 파일이나 명령으로 리디렉션 그만두다 선택 항목 입력
이는 AT&T Unix에 있으므로 지정된 SCCS 명령을 대체하는 것이 help
불법이거나 Bourne Again 셸 작성자가 연락을 하지 못했다는 생각을 부정합니다. 하지만 더 많은 것이 있습니다.
우리는 추정한다실제 사용 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
썬 마이크로시스템즈, Inc. 2004-06-25.
현대 모델의 일부는 모든 것이 하나의 거대한 디렉토리에 저장된다는 것입니다.다니엘 J. 번스타인/command
또는 Arch Linux /usr/bin
. 이것은 물론 다른 명령의 이름을 지정하는 데 어려움을 겪습니다(다른 모델에서는 fastboot
in 및 로 구별됨). 하지만 그 당시에는 그런 모델이 아니었습니다.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 동반 CD/opt/csw/bin/
—오픈CSW폭발파 도구/opt/SUNWspro/bin/
SUNW
— Sun의 (원래) 주식 거래 기호였으며spro
이전 제품 이름인 SunPro를 나타내는 Sun Workshop(현재 Oracle Developer Studio) 도구 모음의 명령입니다./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
그 자체12년이 넘는 기간 동안 우리는 Thompson, Mashey, Bourne 및 Korn 쉘을 출시했습니다. Thompson 쉘의 외부 if
명령이 Bourne 쉘이 이를 키워드로 사용하는 것을 막는다 는 생각은 if
확실히 우스꽝스럽습니다.
(2005년 이후, ksh93q) 추가 내장 명령을 활성화하는 AT&T Korn 셸의 메커니즘은 /opt/ast/bin
값에 포함됩니다 PATH
. 둘 다 내장 명령이 동일한 이름의 외부 명령을 대체할 수 있다는 개념을 지원합니다.그리고PATH
사람들이 자신의 성격을 통제하기 위해 사용할 것으로 기대하는 아이디어와 연결됩니다. ( ast
참고로 AT&T Software Technologies의 약자입니다.)
추가 읽기
- AT&T. "UNIX 시스템 사용자 기본 사항:
help
명령."Unix System V, 버전 3.2: 사용자 안내서. 프렌티스 홀. 1989년에. 2~23페이지 이하 참조. - 데이비드 페더러, 브루스 H. 헌터, 스티븐 G. 코찬, 패트릭 H. 우드(1986). "
/usr
——신비한 카탈로그".UNIX 시스템 관리. 헤이든 북스, ISBN 9780810462892. 54페이지 이하 참조. - XPG.표준, 환경 및 매크로. Oracle Solaris 매뉴얼 페이지. 신탁. 2014년.
- XPG4.표준, 환경 및 매크로. SunOS 매뉴얼 페이지. 신탁. 2004년.
- 마이클 R. 알터(1996). UNIX 시스템 관리자의 동반자. 윌리. ISBN 9780471111443.
if
.수동. 에테쉬 프로젝트.- ksh93 쉘 스크립트의 이상한 동작("command -p mkdir t" 실패)
- https://news.ycombinator.com/item?id=7278408
- 조나단 데보인 폴라드(2017).향상된 매뉴얼 페이지
ul
. 제안.
답변2
/usr/bin/help
PWB/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와 호환되지 않는 이진 기록 파일 형식을 사용합니다.
bash
SCCS에 대해 더 자세히 쓰기 전에 다음을 소개하겠습니다.
bash
ksh93
표준에 나열되지 않은 내장 함수에 대한 메소드를 구현하는 대신 어리석은 내장 함수를 많이 구현하기 때문에 사용자에게 친숙하지 않은 쉘입니다 . 설정을 허용하는 ksh93
내장 함수를 구현합니다.builtin
검색 경로내장 기능의 경우. 이런 어리석은 내장 기능의 가장 큰 문제점은 가장 높은 우선순위로 발견되어 쉽게 비활성화할 수 없다는 것입니다. 그러나 확장된 ksh93 내장 기능은 사용자가 PATH
포함 을 설정해야 하기 때문에 기본적으로 전혀 찾을 수 없는 경우가 많습니다./usr/ast/bin.
SCCS
UNIX 동작 으로 돌아가서 :
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/man/index.html
지난 12년 동안 대대적인 재작성을 거쳤습니다. 그런데 저는 그 이후로 계속 관리자로 활동하고 있습니다.
원래 SCCS 하위 시스템은 AT&T의 Marc J. Rochkind, BSD의 Eric Allman이 작성했습니다.주문하다 sccs
1980년에 SCCS는 사용하기 더 쉬워졌습니다.
따라서 AT&T 세계에 살고 있다면 모든 명령은 다음 위치에 있습니다./usr/ccs/빈BSD 세계에서는 다음을 호출할 수 있습니다.sccs <subcommand>
귀하의 질문에 대답하십시오 :예, 개발자가 PATH에서 sccs help 명령을 사용하는 것이 일반적입니다.SCCS 프런트엔드 명령 sccs
은 일반적 으로/usr/빈