나는 알고 싶다.주문하다우리가 쉘에서 부르는 것은 기능또는프로그램.
답변1
때에 따라 다르지.
명령은 내장 명령, 별칭, 함수, 실행 파일(검색 경로의 스크립트 및 바이너리) 등 여러 범주로 나눌 수 있습니다.
명령줄에서는 단일 단순 네임스페이스를 차지하므로 재정의가 가능합니다. 다양한 유형의 프로그램을 구별하는 방법에는 여러 가지가 있습니다.
$ f () { :; }
$ alias a=cat
$ which f
f ()
{
:
}
우리는 이것이 f
기능이라는 것을 알고 있습니다.
$ which a
alias a='cat'
/usr/bin/cat
우리는 이것이 a
별칭이라는 것을 알고 있습니다.
$ which yes
/usr/bin/yes
우리는 이것이 yes
프로그램이라는 것을 알고 있습니다.
$ builtin echo ; echo $?
0
인클로저에는 내장형 echo
…
$ builtin cat ; echo $?
bash: builtin: cat: not a shell builtin
1
…하지만 하나도 없습니다 cat
. 내장 함수나 별칭이 있지만 프로그램 호출을 고집하는 경우 명령 앞에 백슬래시를 추가하세요.
$ builtin true | printf "%d\n" $?
0
$ alias true=false
$ true ; printf "%d\n" $?
1
$ \true ; printf "%d\n" $?
0
답변2
a의 정의는 function
단일 값을 반환하고 아무것도 출력하지 않습니다. 특히 셸 함수는 함수의 반환 값이 매우 제한되어 있기 때문에 출력이나 기타 부작용이 발생할 수 있습니다.
A는 command
사용자가 컴퓨터에게 단일 프로그램이나 연결된 프로그램 그룹을 실행하는 것과 같은 작업을 수행하도록 지시하는 명령입니다.
A는 program
컴퓨터에 주어지고 컴퓨터의 중앙 처리 장치(CPU)가 이해할 수 있는 일련의 명령(즉, 명령)입니다. 이러한 지침은 일련의 데이터에 대해 수행할 작업을 컴퓨터에 알려줍니다.
그렇긴 하지만, functions
그것들은 프로그램의 논리적 하위 집합입니다. 누군가에게 전화하는 것은 전적으로 프로세스 내에 있습니다. 이는 command
명령 셸(또는 내장 셸)에서 실행될 수 있는 프로그램입니다. 이 명령은 작업을 수행하는 기능을 구현합니다. 그 반대는 사실이 아닙니다.
답변3
쉘에서 호출하는 명령이 함수인지 프로그램인지 알고 싶습니다.
예.
특히, 텍스트를 입력하고 키를 누르면 enter
쉘은 다음 사항을 결정해야 합니다.
- 하나
alias
, - 함수,
- 내장 명령,
- 실행 파일.