~을 위한외부 명령명령을 인수로 사용합니다. 인수는 쉘의 내장 명령이 아닌 외부 명령이어야 합니까?
나는 다음 두 가지 예를 바탕으로 이 질문을 던집니다.
만약에내장 명령명령을 매개변수로 사용할 수 있습니까? 매개변수는 내장 명령 또는 외부 명령이 될 수 있습니까?
그렇지 않다면 설명과 함께 반례를 제시해 주십시오.
답변1
셸 내장 명령은 셸에서만 액세스할 수 있으므로 외부 명령으로는 실행할 수 없습니다. 예를 들어 외부 time
명령은 다른 외부 명령만 실행할 수 있습니다. 외부 명령은 쉘 내장, 쉘 별칭 또는 쉘 기능을 실행할 수 없습니다.
쉘 자체는 외부 명령(예: /bin/sh
등 )이므로 외부 명령을 사용하여 비교와 같은 /bin/bash
쉘을 실행하거나 내장 명령을 사용하여 쉘 스크립트를 실행할 수 있습니다 .-c
sh -c 'time echo foo'
sh -c '/usr/bin/time echo foo'
내장 셸과 이름이 같은 외부 명령(예: time
, , , ...)이 있는 경우 외부 명령은 해당 명령을 실행할 수 있지만 echo
동일한 kill
기본 작업을 수행하더라도 약간 다릅니다(예: 다른 명령줄 옵션, 다른 출력 형식, 다른 기능 - 내장은 kill
쉘 작업 번호를 통해 종료될 수 있지만 외부는 kill
불가능).
time
또는 같은 쉘 내장 명령은 command
내장 또는 외부 명령은 물론 쉘 별명 및 기능을 실행할 수 있습니다.
답변2
예를 들어 command
내부 및 외부 명령을 인수로 사용할 수 있는 command 가 있습니다.
command
command [-pVv] command [arguments …]
command라는 쉘 함수를 무시하고 인수를 사용하여 명령을 실행합니다. 쉘 내장 명령이나 PATH를 검색하여 찾은 명령만 실행하십시오. ls라는 쉘 함수가 있는 경우 함수 내에서 "command ls"를 실행하면 함수를 재귀적으로 호출하는 대신 외부 명령 ls가 실행됩니다. -p 옵션은 PATH의 기본값을 사용하여 모든 표준 유틸리티를 찾을 수 있음을 의미합니다. 명령을 찾을 수 없거나 오류가 발생하면 이 경우 반환 상태는 127이고, 그렇지 않으면 명령의 종료 상태입니다.
-V 또는 -v 옵션이 제공되면 명령에 대한 설명이 인쇄됩니다. -v 옵션을 사용하면 명령을 호출하는 데 사용되는 명령 또는 파일 이름을 나타내는 단어가 표시됩니다. -V 옵션은 더 자세한 설명을 생성합니다. 이 경우 명령이 발견되면 반환 상태는 0이고, 그렇지 않으면 0이 아닌 값을 반환합니다.
enable
or 명령은 help
내장 명령만 인수로 사용합니다.
이 time
명령은 셸 내장 명령과 매개변수를 사용할 수 있습니다.