$ {debian_chroot: -} Почему возиться с: -? [дубликат]

На этот вопрос уже есть ответ здесь:

  1. . bashrc и bash.bashrc включают:

      [-z "$ {debian_chroot: -}"] 
     
  2. На странице руководства Bash указано следующее для раскрытия параметров в следующей форме: $ {параметр: -word}

    Если параметр не задан или равен нулю, расширение слова заменяется. В противном случае подставляется значение параметра .

  3. Зачем писать

     "$ {debian_chroot: -}" 
     

    , а не просто

     "$ {debian_chroot}" 
     

    ?

Ответ I Я использую: https://www.reddit.com/r/Ubuntu/comments/3xb9sp/debian_chroot_why_bother_with/

2
задан 18 December 2015 в 18:01

1 ответ

Часть, которую Вы упоминаете, прибывает ранее в эти .bashrc, в то время как то, что упоминается в дубликате, прибывает немного позже, в PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' часть. Они сотрудничают, хотя!

Поэтому, что делает код, который Вы упоминаете, говорят с точки зрения простого английского языка? Здесь это для ссылки.

if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

Это запускается с этой части ${debian_chroot:-}. У нас есть тот debian_chroot, переменная установила? Если да, эхо, что переменная, но если не - повторяют то, что прибывает после -. И что прибывает после -? Ничто! Точно это! Почему беспокойство? Что, если переменная установлена? Тогда мы не должны выполнять тело, если оператор и просто использует debian_chroot переменная , как в подсказке PS1 позже. Помните, что я сказал, что те две части кода сотрудничают? Хорошо, идущий дальше.

Следующий шаг, если мы оценили переменную, чтобы быть пробелом, мы проверяем на существование читаемых /etc/debian_chroot файл. На Ubuntu 14.04, по крайней мере, нет никакого /etc/debian_chroot файл. Таким образом каждый раз, когда Вы запускаете удар, он идет, "О, таким образом, debian_chroot не установлен, и у нас нет того файла там...OK, оставьте только \u@\h:\w\$ в подсказке!"

Теперь, что происходит, если у нас ДЕЙСТВИТЕЛЬНО есть тот файл?

xieerqi:
$ sudo vi /etc/debian_chroot
[sudo] password for xieerqi: 

xieerqi:
$ bash
(HELLOWORLD)xieerqi@eagle:~$ echo $debian_chroot
HELLOWORLD
(HELLOWORLD)xieerqi@eagle:~$ 

хорошо, проследите код снова: мы имеем debian_chroot, устанавливают? Нет. У нас есть тот /etc/debian_chroot файл? Да, поэтому возьмите его содержание и пихните их в это пользователи PS1 подсказка. Похож это точно, что произошло в моем выводе, правильно?

0
ответ дан 2 December 2019 в 23:33

Другие вопросы по тегам:

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