저는 Raspberry Pi에서 RASPBIAN을 사용하고 있습니다. 나는 "apropos" 명령이 "wahtis" 명령에 대한 심볼릭 링크라는 것을 발견했습니다. 그러나 동일한 매개변수와 함께 사용하면 다음 명령의 출력이 일치하지 않습니다.
$ whatis delete
delete: nothing appropriate.
하지만
$ apropos delete
argz_delete (3) - functions to handle an argz list
delete_module (2) - unload a kernel module
dphys-swapfile (8) - set up, mount/unmount, and delete an swap file
git-branch (1) - List, create, or delete branches
git-replace (1) - Create, list, delete refs to replace objects
git-symbolic-ref (1) - Read, modify and delete symbolic refs
git-tag (1) - Create, list, delete or verify a tag object signed
***output is truncated to save space....***
분명히, apropos는 whatis에 대한 상징적 링크입니다.
pi@raspberry:~ $ which apropos
/usr/bin/apropos
pi@raspberry:~ $ ls -l /usr/bin/apropos
lrwxrwxrwx 1 root root 6 Aug 24 2017 /usr/bin/apropos -> whatis
어떻게 이런 일이 일어날 수 있습니까?
답변1
실행 중인 실행 파일은 전체 호출 명령줄을 알고 호출된 이름을 기반으로 해당 동작을 수정할 수 있습니다. apropos
/의 특정 인스턴스 에 대해서는 whatis
다음을 볼 수 있습니다.소스 코드에서(링크된 최신 버전의 895번째 줄 부근) 가장 먼저 해야 할 일은 명령이 이름으로 호출되는지 확인하는 것입니다 apropos
.
int main (int argc, char *argv[])
{
#ifdef HAVE_ICONV
char *locale_charset;
#endif
int status = OK;
program_name = base_name (argv[0]);
if (STREQ (program_name, APROPOS_NAME)) {
am_apropos = 1;
argp_program_version = "apropos " PACKAGE_VERSION;
} else {
am_apropos
또한 처리 중에 플래그를 확인하고 플래그 설정 여부에 따라 다르게 동작하는 위치가 약 12개 있습니다 .