쉘 $0
매개변수는 호출 프로그램의 이름을 보유합니다. my_command
홈 디렉토리에 이 명령에 대한 심볼릭 링크를 생성하고 /usr/local/bin/command1
를 입력하여 실행하는 경우 ./my_command
의 값은 무엇입니까 $0
? 누구든지 이유를 설명할 수 있나요? 감사해요!
답변1
$0
호출한 프로그램의 이름은 저장되지 않지만, 호출된 프로그램의 이름은 저장됩니다. 호출 프로그램도 마찬가지입니다 ./my_command
.$0
./my_command
심볼릭 링크라는 사실은 아무런 차이가 없습니다.
답변2
될 내용을 포함한 명령줄(또는 UNIX에서는 명령줄 인수 배열)이 $0
다음으로 전달됩니다.exec
호출 프로그램에 의해 호출됩니다.
심볼릭 링크 확인, Shebang 처리 등은 호출 처리의 일부로 시스템에서 수행됩니다 exec
.
따라서 호출 프로그램(귀하의 경우 쉘)이 argv
( /.my_command
귀하의 경우)의 첫 번째 항목으로 지정하는 것은 무엇이든 가 됩니다 $0
.