osx dtruss가 bash를 추적할 때 ~/.bash_profile 열기를 보고하지 않습니까?

osx dtruss가 bash를 추적할 때 ~/.bash_profile 열기를 보고하지 않습니까?

처음에 다음 줄이 있다고 가정해 보겠습니다 ~/.bash_profile.

echo "*** THIS IS ~/.bash_profile RUNNING ***"

Linux 시스템(Ubuntu 14.04)에서는 다음을 사용하여 bash부팅 시 로드된 파일을 확인할 수 있습니다 strace.

strace -f bash --login 2>&1 | tee /tmp/log.strace
# type [ENTER] here, or "hello" [ENTER], then Ctrl+C to exit
grep 'bash_' /tmp/log.strace

결과는 예상대로입니다.

faccessat(AT_FDCWD, "/etc/profile.d/bash_completion.sh", R_OK) = 0
open("/etc/profile.d/bash_completion.sh", O_RDONLY) = 3
open("~/.bash_profile", O_RDONLY) = 3
read(3, "echo \"*** THIS IS ~/.bash_profil"..., 48) = 48
write(1, "*** THIS IS ~/.bash_profile RUNN"..., 40*** THIS IS ~/.bash_profile RUNNING ***

그러나 나는 이것을 통해 OSX 10.9 컴퓨터에 로그인했으며 ssh동일한 작업을 수행해야 합니다. OSX에서는 사용할 수 없기 때문에 다음과 같이 strace사용했습니다 .dtruss

dtruss -f bash --login 2>&1 | tee /tmp/log.dtruss
# type [ENTER] here, or "hello" [ENTER], then Ctrl+C to exit
grep 'bash_' /tmp/log.dtruss

~/.bash_profile이상하게 도 로드된 적이 있다는 언급이 없는 것 같습니다 .

$ grep 'bash_' /tmp/log.dtruss
$

bash --login..., - 해당 OSX 시스템에서 실행하면 위의 내용이 인쇄되는 것을 볼 수 있더라도 로드해야 한다는 echo의미입니까 ? ~/.bash_profile!

물론, dtruss다른 파일에 대한 액세스를 보고할지 여부는 다음과 같습니다.

$ grep 'open\|stat' /tmp/log.dtruss 
41819/0xce5a2:  stat64("/AppleInternal\0", 0x7FFF5CBC2A88, 0x0)      = -1 Err#2
41819/0xce5a2:  stat64("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x7FFF5CBC23F8, 0x7FFF5CBC3330)         = 0 0
41819/0xce5a2:  open("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x0, 0x0)         = 3 0
41819/0xce5a2:  stat64("/usr/lib/libncurses.5.4.dylib\0", 0x7FFF5CBC2208, 0x7FFF5CBC30A0)        = 0 0
...
41819/0xce5a2:  open("/dev/tty\0", 0x6, 0x7FFF79D33940)      = 3 0
41819/0xce5a2:  open_nocancel("/usr/share/locale/en_US.UTF-8/LC_COLLATE\0", 0x0, 0x1B6)      = 3 0
...
41819/0xce5a2:  stat64("~/.fastlane/bin/bash\0", 0x7FFF5CBC37E0, 0x0)        = -1 Err#2
41819/0xce5a2:  stat64("/usr/bin/bash\0", 0x7FFF5CBC37E0, 0x0)       = -1 Err#2
41819/0xce5a2:  stat64("/bin/bash\0", 0x7FFF5CBC37E0, 0x0)       = 0 0
41819/0xce5a2:  stat64("/bin/bash\0", 0x7FFF5CBC3820, 0x0)       = 0 0
...

$HOME... 예를 들어, 검색의 일부로 해당 디렉토리에 액세스했음을 알 수 있습니다 $PATH(실제로는PATH="~/.fastlane/bin:$PATH" 설정은 완전히 동일합니다 ~/.bash_profile).

내 질문은 - 왜 이런 일이 발생합니까? 유사한 파일에 액세스할 때 보고 dtruss하도록 사용해야 하는 특별한 호출이 있습니까 ? 아니면 Linux에서 허용되는 것과 동일한 유형의 파일 열기 추적을 ~/.bash_profile구현하려면 OSX에서 다른 프로그램을 사용해야 합니까 ? strace아니면 OSX에서 시작된 프로세스가 너무 달라서 별도의 프로세스로 실행되기 전에 백그라운드에서 프로세스를 "로드"합니까 ~/.bash_profile?bashbash

관련 정보