Кто-нибудь может объяснить, что означает эта команда?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
${GZIP_BINDIR-'/bin'}
bash
шаблон расширения параметра. От man bash
:
${parameter:-word}
Use Default Values. If parameter is unset or null,
the expansion of word is substituted. Otherwise, the value of parameter
is substituted.
Сразу до этой страницы справочника части имеет (благодаря @jwodder для уведомления):
Omitting the colon results in a test only for a parameter that is unset.
, Поскольку в странице справочника говорится, она установит значение по умолчанию переменной GZIP_BINDIR
. Если GZIP_BINDIR
будет иметь значение ранее набор (кроме пустого указателя, поскольку Вы не используете :
), тогда, что значение будет использоваться, то иначе /bin
будет использоваться в качестве значения переменной GZIP_BINDIR
.
, С другой стороны, если Вы хотите протестировать на нулевые значения также, используйте этот шаблон (включайте :
):
${GZIP_BINDIR:-'/bin'}
После этого эти $PATH
будет расширен до значений, которые это содержало прежде. Так, если PATH
ранее имел:
/usr/sbin:/usr/bin
Теперь Ваш PATH
будет (рассмотрение GZIP_BINDIR
не установлено):
/bin:/usr/sbin:/usr/bin
export PATH
сделает это PATH
доступным всем дочерним процессам.
Нет ли действительно никакое двоеточие перед дефисом в расширении параметра ${GZIP_BINDIR-'/bin'}
?
Этот вид конструкции почти всегда пишется с двоеточием, как в ${GZIP_BINDIR:-'/bin'}
, что означает, "если $GZIP_BINDIR является ПУСТЫМ или сброс, установите его на '/bin'"
Однако синтаксис, который Вы предоставили , допустимы, но редки. ${GZIP_BINDIR-'/bin'}
(никакое двоеточие) средства, "если $GZIP_BINDIR сброшен, устанавливают его на '/bin'". Если это установлено (был объявлен), но ничто присвоенное ему (например, это является ПУСТЫМ), ничто не будет вставлено.
может быть ошибка здесь хотя как двоеточие после переменная конструкция (...} :
$PATH...) будет все еще быть вставленным, если $GZIP_BINDIR будет установлен, но ПУСТОЙ УКАЗАТЕЛЬ. Так как это добавило бы двоеточие в начале $PATH, это заставит текущий каталог искаться сначала.
, Который, как полагает большинство, является проблемой безопасности, так как она облегчает заставлять вредоносную программу с тем же именем как стандартные команды быть выполненной только путем помещения его в текущем каталоге.
Для оставления $PATH без изменений, если бы $GZIP_BINDIR установлен, но (пустой) ПУСТОЙ УКАЗАТЕЛЬ, правильный синтаксис был бы ${GZIP_BINDIR-'/bin:'}$PATH; export PATH
Для оставления $PATH без изменений, если бы $GZIP_BINDIR или сброшен или установлен, но ПУСТОЙ УКАЗАТЕЛЬ, правильный синтаксис был бы ${GZIP_BINDIR:-'/bin:'}$PATH; export PATH
Это обновление команды переменная ПУТИ.
Эти PATH
переменная среды, определяющая ряд каталогов, где исполняемые программы расположены.
PATH="${GZIP_BINDIR-'/bin'}:$PATH";
Это добавляет значение другой переменной GZIP_BINDIR
, если выход к предыдущему ПУТИ еще использует / мусорное ведро вместо этого и добавляет его для СОЕДИНЕНИЯ КАНАЛОМ
export PATH
, экспорт используется для устанавливания ПУТИ, доступного для всего Read дочерних процессов и подоболочек это для получения дополнительной информации [приблизительно 1 112]
, необходимо отметить, что это не статично, и Вы освободите его, как только Вы выходите из своей оболочки.
, Чтобы заставить этот ПУТЬ отредактировать постоянный, необходимо добавить эти строки к Вашему .bashrc
gedit .bashrc
и добавить, что строка
export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
тогда выполняет команду
source .bashrc