読者です 読者をやめる 読者になる 読者になる

LD_LIBRARY_PATH の設定方法をあれこれ考える

Linux シェルスクリプト

概要

シェルスクリプト内で LD_LIBRARY_PATH を設定することを考える.
LD_LIBRARY_PATH が設定されていない状態で,以下の方法で設定すると末尾に ":" がつくため気持ち悪い
// もちろん動作には影響を与えないので,問題はないはずだが...

#!/bin/bash

# LD_LIBRARY_PATH は空とする
export LD_LIBRARY_PATH=/usr/local/lib64:${LD_LIBRARY_PATH}
echo ${LD_LIBRARY_PATH}  # /usr/local/lib64: が表示されるはずだが,末尾の : が気になる

:${パラメータ:+<値>} を使う

パラメータが空文字以外に設定されている場合,パラメータに値を代入する

#!/bin/bash

LD_LIBRARY_PATH=/usr/local/lib64${LD_LIBRARY_PATH:+;}${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH

if でがんばる

if [ -z 文字列 ]; は文字列が空文字の場合に真になる

#!/bin/bash                                                                     

if [ -z ${LD_LIBRARY_PATH} ]; then
    export LD_LIBRARY_PATH=/usr/local/lib64
else
    export LD_LIBRARY_PATH=/usr/local/lib64:${LD_LIBRARY_PATH}
fi

[余談] : ${パラメータ:=<値>} を使う

パラメータが空の場合もしくは設定されていない場合に,パラメータに値を代入する
ただし,この方法ではパラメータに追加ができないので,LD_LIBRARY_PATH の設定には不向きである

#!/bin/bash                                                                     

: ${LD_LIBRARY_PATH:="/usr/local/lib64"}
export LD_LIBRARY_PATH

${パラメータ:-<値>} が上記と同じ動作となる

#!/bin/bash                                                                     

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-/usr/local/lib64}
export LD_LIBRARY_PATH