내부 명령과 동일한 이름의 외부 명령(프로그램)이 있으면 기본적으로 어떤 명령이 실행됩니까?

내부 명령과 동일한 이름의 외부 명령(프로그램)이 있으면 기본적으로 어떤 명령이 실행됩니까?

bash이라는 내부 명령이 있고 kill, 리눅스에는 이라는 외부 명령(프로그램)이 있습니다 kill.

kill에서 실행하면 bash내부 명령이 kill실행됩니다.

두 가지 질문이 있습니다.

  1. 기본적으로 내부 명령 대신 외부 명령이 실행되도록 설정을 변경할 수 있습니까(물론 외부 명령에 대한 전체 경로를 지정하지 않고).
  2. 기본적으로 외부 명령 대신 내부 명령을 실행하는 것이 모든 (기본) 쉘의 표준 동작입니까, 아니면 단지 문제입니까 bash?

답변1

  1. 전화 해서 env.

    $ env kill
    kill: not enough arguments
    $ kill
    kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
    
  2. 모든 쉘 및 명령 프로세서.

답변2

첫 번째 질문에: 예, 내부 명령 대신 기본적으로 외부 명령을 실행하도록 설정하는 것이 있습니다.

다음과 같이 내장 기능을 끌 수 있습니다.

enable -n COMMAND

내장된 기능을 켜는 방법은 다음과 같습니다.

enable COMMAND

또는 명령의 우선순위를 변경할 수 있습니다. Bash 명령의 우선순위는 다음과 같습니다.

  • 별칭, 최고
  • 기능
  • 내장
  • $PATH의 외부 명령

두 번째 질문: 내부 명령이 외부 명령보다 우선한다고 항상 가정할 수 있다고 생각합니다. 이것은 단지 배쉬 일이 아닙니다.

관련 정보