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_profilebashbash

ベストアンサー1

おすすめ記事