내장 명령은 bash에서 무엇을합니까?


35

내장 명령이 무엇인지 알고 있지만 builtin그 자체로 무엇을합니까? 실행하면 which ls나에게 표시 /bin/ls되지만 실행 which builtin은 아무것도 반환하지 않습니다.

man builtin내장 명령 목록을 제공합니다. 그 중 하나는입니다 builtin. 매뉴얼 페이지의 나머지 부분에서는 내장 기능이 무엇인지 설명하지 않습니다 builtin.

builtin --help나에게 builtin: usage: builtin [shell-builtin [arg ...]]말하지만 여전히 그 일을하지 않습니다.

다른 내장 명령이 아닌 방식으로 bash의 일부입니까?


3
당신은 잊었다 help builtin.
Ignacio Vazquez-Abrams

3
which builtin외부 명령which 의 위치를보고 하기 때문에 결과를 반환하지 않습니다 . 쉘을 요청하면 당연히 그 사실을 알려줄 것입니다 . 당신과 같은 찾을 수 있습니다 , 등type builtinbuiltin is a shell builtinaliasset
토비 Speight

1
builtin help builtin
theonlygusti

답변:


50

builtin명령을 사용하면 동일한 이름으로 다른 명령을 실행하지 않고 쉘 내장 버전의 명령을 실행할 수 있습니다.

예를 들어, cd디렉토리를 변경할 때마다 일부 추가 상태를 인쇄하도록 명명 된 쉘 함수를 정의했다고 가정합니다 . 그러나 당신은 그것을 엉망으로 만들었고 이제는 디렉토리를 올바르게 바꿀 수 없습니다. 이제 builtin cd ~깨진 쉘 기능을 실행하지 않고도 홈 디렉토리로 CD를 성공적으로 다시 입력 할 수 있습니다 .

그리고 bash 매뉴얼 페이지의 사본에는 "SHELL BUILTIN COMMANDS" builtin라는 섹션이 있으며 해당 섹션 에서 명령 의 의미를 정의합니다 (아래에 표시됨).

내장 쉘 내장 [인수]

    지정된 쉘 내장을 실행하여 인수를 전달하고
    종료 상태를 반환합니다. 이것은 함수를 정의 할 때 유용합니다
    쉘 내장과 이름이 동일하며
    함수 내에서 내장 기능. 내장 CD는
    일반적으로이 방법으로 재정의했습니다.

    쉘 내장이 쉘 내장이 아닌 경우 리턴 상태는 false입니다.
    명령.

14
좋은 대답입니다. 그러나 builtin명령이 bash의 실제 내장 인지 어떻게 확신 할 수 있습니까?
Pacopaco

14
@Pacopaco : 당신은 할 수 없습니다 :-). 당신은 할 수 덮어 builtin도 : function builtin { echo "Hi from builtin :-)"; }. 그런 다음 builtin더 이상 작동하지 않습니다.
sleske

12
@Pacopaco, type builtin그것이 진짜인지 알려줄 것 builtin입니다. type비 내장형으로 대체 되지 않는 한 type...
Toby Speight

10
아 ... 불행히도 하나는 할 수 있습니다 : alias unset = "echo unset is overrided"; alias alias = "echo aliass overridden"... 여기서 운이 없습니다.
Olivier Dulac

8
나는이 지속적인 토론을 좋아합니다!
Sam Weaver
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.