Добавьте к подобной PATH переменной, не создавая ведущее двоеточие, если сброшено

POSIXly:

 set -- /<root_path>/<process_two_path>/logs/*
 shift "$(($# - 1))"
 printf '%s\n' "$1"

Так как Вы упоминаете zsh:

 print -r /<root_path>/<process_two_path>/logs/*([-1])
10
18.10.2014, 22:31
2 ответа

Вы находитесь на правильном пути с оператором расширения $ {: +} , вам просто нужно немного изменять:

V=${V:+${V}:}new_V

Первые скобки расширяются до $ V и Комплектная кишка IFF V уже в противном случае - это именно то, что вам нужно (и, вероятно, также одна из причин существования оператора).

Таким образом, в вашем случае:

export "PKG_CONFIG_PATH=${PKG_CONFIG_PATH:+${PKG_CONFIG_PATH}:}$(pyenv prefix)/lib/pkgconfig"
13
27.01.2020, 20:01

Недавно я настроил GNU stow на своих машинах для хранения пользовательских -обширных материалов, таких как библиотеки под ~/.local, и столкнулся с проблемами при определении LD_LIBRARY_PATH, CPATHи LIBRARY_PATH, нечаянно поставив там двоеточие и так разбивая вещи.

Затем я нашел ваш вопрос, и ответ был не совсем элегантным ; -), и я написал для этого небольшую функцию, ее можно найти здесь:https://gist.github.com/rico-chet/0229e4c080d9f51a02535dd25a656a8a

## Copyright (C) 2018 Alex Thiessen <alex.thiessen.de+github@gmail.com>
## 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

1
27.01.2020, 20:01

Теги

Похожие вопросы