adduser
및 useradd
, 및 의 차이점을 찾고 있었습니다.설명그것은 useradd
명령이고 adduser
Perl 스크립트입니다. 나는 perl 스크립트가 무엇인지 이해하지만, 내가 이해하지 못하는 것은 command
then이 정확히 무엇인지입니다.
나는 항상 , 등의 명령은 ls
모두 ln
단순히 cd
한 가지 작업을 수행하는 언어로 작성된 간단한 프로그램이라고 생각했습니다. 이러한 "간단한 프로그램"과 Perl 스크립트의 차이점은 무엇입니까?
물론 (perl) 스크립트는 컴파일되지 않고 런타임에 해석된다는 것을 알고 있지만 이것이 유일한 차이점은 아닌 것 같습니다.
답변1
간단히 말해서 명령은 컴퓨터가 수행하는 명령(또는 명령 집합)입니다.
독립 실행형 명령
ls
, 등과 같은 기본 Unix 유틸리티는 ln
(보통) C로 작성되고 독립 실행형 실행 파일로 컴파일됩니다.프로그램들통역사를 실행할 필요가 없습니다. 그들은 일반적으로 특정을 요구합니다도서관시스템에 파일을 설치할 예정이지만 이는 또 다른 질문에 대한 답변입니다.
스크립트
스크립트는 명령의 모음이며 실제로 스크립트 자체는 명령으로 간주됩니다.
ㅏ펄 스크립트일련의 Perl 문이며 perl
실행 파일(독립 실행형 및 컴파일된)이 필요합니다.프로그램Perl 문을 해석합니다.
때로는 크고 복잡한 해석 스크립트(Perl, Python 및 Ruby와 같은 언어)를 다음과 같이 지칭하기도 합니다.통역 프로그램기간 동안스크립트더 짧고 간단한 스크립트용으로 예약되어 있습니다.
ㅏ쉘 스크립트일련의 다른 명령(모든 유형의 명령)이며 스크립트를 해석하려면 Bash와 같은 Unix 셸이 필요합니다. Bash 매뉴얼 페이지에서:
Bash는 표준 입력이나 파일에서 읽은 명령을 실행하는 sh 호환 명령 언어 해석기입니다.
쉘 내장
쉘은 일반적으로내장독립형 프로그램도 아니고 스크립트도 아닌 명령. 대신, 이들은 셸 자체의 일부이며 셸에서 직접 실행됩니다. cd
이러한 내장 명령의 예입니다.
때로는 쉘 내장 명령과 독립 실행형 명령으로 동시에 존재하는 명령(예: command)이 있습니다 echo
.
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo
자체적으로 내장된 쉘을 실행하는 반면, 독립형 명령은 전체 경로를 제공하여 실행할 수 있습니다.
내장 버전의 echo를 실행합니다.
$ echo --version
--version
독립 실행형 echo
프로그램 실행:
$ /usr/bin/echo --version
echo (GNU coreutils) 8.23
Packaged by Cygwin (8.23-4)
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
참고: 위의 세부 사항은 Unix 환경을 의미하지만 Windows 환경에도 동일한 원칙이 적용됩니다.
답변2
내장 명령은 쉘의 일부입니다. 프로그램은 쉘에 의해 실행됩니다.
내장 명령은 셸 자체에 포함되어 있습니다. 내장된 명령의 이름이 간단한 명령의 첫 번째 단어로 사용되는 경우(참조:간단한 명령), 쉘은 다른 프로그램을 호출하지 않고 명령을 직접 실행합니다. 별도의 유틸리티로는 얻을 수 없거나 불편한 기능을 구현하려면 내장 명령이 필요합니다.
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands
답변3
명령단지 응용 프로그램이나 시스템에 작업을 수행하도록 지시하는 방법을 의미합니다.
응용프로그램은 일반적으로 GUI 또는 에서 다양한 명령을 허용 stdin
하지만 UNIX 소켓이나 명명된 파이프, 일종의 웹 API, RPC 연결 또는 기타 사용자 정의 프로토콜과 같은 다른 방법도 가능합니다.
일반적으로 GUI 없이 한 가지 작업만 수행한 다음 종료되는 응용 프로그램을 명령이라고 부를 수도 있습니다. 왜냐하면 실제로 이 응용 프로그램에 의미 있는 "명령" 하나만 "줄" 수 있기 때문입니다. 이것이 ls
와 같은 작은 프로그램이 작동하는 방식이며 명령이라고 불리는 이유입니다.
그러나 Photoshop을 명령이라고 부르지는 않지만 GUI를 통해 Photoshop 내에서 명령을 실행하는 것은 확실합니다.
그러나 이 용어는 사람들마다 다른 의미를 가질 수 있습니다. 귀하의 예에서는명령작동하기 위해 스크립트 인터프리터가 필요한 파일과 비교하여 직접 실행되는 실행 파일을 설명하는 데 사용됩니다. Perl 스크립트를 실행할 때 /usr/bin/perl
실제로 실행되는 바이너리이기 때문에 구별이 중요할 수 있습니다(따라서 오랫동안 실행되는 Perl 스크립트를 종료하려면 에서 이를 찾아야 합니다 ps
). 그러나 대부분의 셸에는 셸 자체에 대한 명령인 "내장" 명령이 있으며 외부 실행 파일이 실행되지 않습니다. 예를 들어, 자체적 cd
으로 처리되며 bash
호출하거나 유사하지 않습니다 /sbin/cd
.