にディレクトリを追加する必要がありますPKG_CONFIG_PATH
。通常は標準を使用します。
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$(pyenv prefix)/lib/pkgconfig
しかしPKG_CONFIG_PATH
、以前は私のシステムに設定されていませんでした。したがって、変数は:
最初に現在のディレクトリを見つけるように指示する文字で始まります。私はそれをしたくありません。私は次の点を決めました。
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}$(pyenv prefix)/lib/pkgconfig
しかし、あまりにも醜いです。もっと良い方法がありますか?変数が設定されている場合にのみ条件付きでコロンを追加する適切な方法は何ですか?
答え1
スプレッド演算子を正しく使用しました${:+}
。少しだけ修正してください。
V=${V:+${V}:}new_V
最初の中かっこは次に展開されます。$V
そしてコロンiffはV
すでに空に設定されています。これはまさに必要です(そしておそらく演算子が存在する理由の1つです)。
あなたの場合は次のとおりです。
export "PKG_CONFIG_PATH=${PKG_CONFIG_PATH:+${PKG_CONFIG_PATH}:}$(pyenv prefix)/lib/pkgconfig"
答え2
最近設定しました。GNUリポジトリライブラリのようにユーザースコープエントリを保存するマイコンピュータで~/.local
定義するのに問題があり、誤ってそこにコロンを入れて問題が発生しました。LD_LIBRARY_PATH
CPATH
LIBRARY_PATH
それから、あなたの質問に対する答えが完全に正確ではないことがわかりました。エレガント;-)、私はこれを処理するために小さな関数を書いた。ここで見つけなさい:https://gist.github.com/rico-chet/0229e4c080d9f51a02535dd25a656a8a
## Copyright (C) 2018 Alex Thiessen <[email protected]>
## Copyright (C) 2018 https://unix.stackexchange.com/users/116858/kusalananda
## SPDX-License-Identifier: GPL-2.0-or-later
## <https://spdx.org/licenses/GPL-2.0-or-later.html>
function join() {
if [ ${#} -eq 0 ]
then
echo "\`join\` appends elements separated by colons to a \`bash\` variable " >&2
echo "usage: join <variable> <element> [element ...]" >&2
return 1
fi
variable="${1}"
shift
export ${variable}="${!variable:+${!variable}:}$(IFS=:; echo "${*}")"
}
// @Kusalanandaが提案したように編集されました