シェルスクリプトから走らせると自作の共有ライブラリがみつからず四苦八苦。ターミナル(zsh)からは問題ないのに。
% sh test.sh
Library not loaded: libmockgal.so
Referenced from: /usr/local/lib/python3.5/site-packages/mockgallib/_mockgallib.cpython-35m-darwin.so
Reason: image not found
原因は El Capitan から LD_LIBRARY_PATH, DYLD_LIBRARY_PATH がセキュリティ強化のため環境変数にできなくなったために、/bin/sh から LD_LIBRARY_PATH が見えないことにあった。
% export LD_LIBRARY_PATH=hoge
% echo $LD_LIBRARY_PATH # 変数はある
hoge
% env | grep LD # LD_LIBRARY_PATH は環境変数にない
ログインシェル(zsh
)で作業する分には良いのだけれども、シェルスクリプトでライブラリがみつからないことに。
#!/bin/sh
echo $LD_LIBRARY_PATH # 空っぽ
"System Integrity Protection (SIP)" なるものをがんばって無効にしてもよいけれど [2]、そこまでではない。あきらめて、/usr/local/lib に自作のライブラリへのリンクを作りました。