2012-04-25 18 views
3

私はLD_PRELOADで遊んでいて、印刷する文字列を大文字に変換する関数にputs()を単にラップするライブラリを作成しました。何がこのコマンド用のLD_PRELOAD環境変数をフルパスで入力せずに実行する

$ pwd 
/home/adrian/test 

ようruningてたとき、私は、コマンドを実行すると、期待どおりの動作が

$ /bin/pwd 
/HOME/ADRIAN/TEST 

しかし、それは動作しません動作するようになりましので

$ export LD_PRELOAD=/home/adrian/test/myputs.so 

としてLD_PRELOAD変数をエクスポートこの場合、LD_PRELOAD環境変数が無視されるメカニズムはありますか?

答えて

3

pwdshell builtin commandである - man bashまたはdocs hereを参照してください。したがって、あなたが書く場合

$ pwd 

次に、組み込みコマンドが起動されます。パスを伝えると、ELFバイナリが実行され、LD_PRELOADが使用されます。

+2

ありがとうございます!クイック検索の後、私は 'enable -n pwd'を使って組み込みのpwdを無効にすることができ、現在は期待通りに動作することを発見しました。 – eltommo

+0

@eltommo、うわー、私はこの可能性を認識していませんでした。面白い! – TMS

関連する問題