Linux Проверить, существует ли PATH - PullRequest
0 голосов
/ 13 июля 2020

Я хочу создать сценарий оболочки, который проверяет, была ли добавлена ​​переменная среды, в противном случае.

if [ ! echo $PATH | grep "/what_i_want_to_add" ]; then # If there is no environment variable
    export PATH=$PATH:/what_i_want_to_add
fi

Если возможно, я хотел бы отказаться от вывода с помощью / dev / null. что мне делать?

1 Ответ

1 голос
/ 13 июля 2020

Это функция, используемая в arch linux внутри /etc/profile. Он работает безупречно при добавлении пути к PATH.

# Append our default paths
appendpath () {
    case ":$PATH:" in
        *:"$1":*)
            ;;
        *)
            PATH="${PATH:+$PATH:}$1"
    esac
}

# usage example:
appendpath '/what_i_want_to_add'
  • case ":$PATH:" in - соответствует $PATH, но с конечной и начальной запятой, так что мы можем:
    • *:"$1":*) - сопоставить :$PATH: с чем угодно, за которым следует двойная точка, за которым следует аргумент, за которым следует двойная точка и что угодно. Поскольку мы использовали ":$PATH:", он будет расширен до :/path1:/path/2:/path/3:, который может быть сопоставлен с *:/path1:* с помощью выражения подстановки.
      • Если совпадение прошло успешно, ничего не делать
    • *) - иначе
      • Добавьте аргумент в PATH.
      • ${PATH:+$PATH:} - Расширение параметров оболочки. Если PATH пусто или NULL, то расширяется до нуля. Если путь не пустой, расширьте его до $PATH, за которым следует двойная точка. Это может обрабатывать пустой аргумент PATH=, так что ведущий пустой : не добавляется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...