에 디렉토리를 추가해야 합니다 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
이미 비어 있음으로 설정되어 있습니다. 이는 정확히 필요한 것입니다(그리고 아마도 연산자가 존재하는 이유 중 하나일 것입니다).
귀하의 경우에는 다음과 같습니다.
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가 제안한 대로 편집됨