Я думаю, что это часть bash
руководство, которое вы ищете (POSIX имеет аналогичную формулировку того же эффекта ):
Если не выполняется раскрытие подстроки, используйте формы, задокументированные ниже (например,
: -
),bash
проверяет параметр, который не задан или равен нулю. Если пропустить двоеточие, выполняется проверка только для параметра, который равен отключено.
Разница между неустановленной переменной и переменной с нулевым значением состоит в том, что неустановленной переменной даже не существует.
Итак,
#!/bin/bash
bash -c 'echo "$#"; printf "%s\n" "$@"' -- "${DOMAIN_SUFFIX=.example.com}"
Это установит DOMAIN_SUFFIX
на .example.com
, если DOMAIN_SUFFIX
не задан, но не, если он равен нулю (пустая строка ).
Используемая здесь команда просто создаст новый процесс bash
, который напечатает номер переданного аргумента командной строки, за которым следуют все позиционные параметры, по одному в каждой строке:
bash-4.4$ bash script
1
.example.com
bash-4.4$ DOMAIN_SUFFIX=.hello.world bash script
1
.hello.world
bash-4.4$ DOMAIN_SUFFIX= bash script
1
bash-4.4$
В последнем примере , DOMAIN_SUFFIX =
идентичен DOMAIN_SUFFIX = ""
.
Похоже, что некоторые из ваших команд были изменены / удалены вне yum
.
Вам необходимо переустановить недостающие команды следующим образом:
yum reinstall which
Вы можете указать несколько пакетов по мере их идентификации:
yum reinstall which clear
Если вы обнаружите, что было удалено много команд, возможно, будет проще переустановить всю вашу систему.
Я бы попробовал поискать недостающую команду по ее имени.
find / -name which
Если предположить, что 'which' и есть недостающая команда, то вы можете добавить ее в PATH.
yum install ncurses
или
dnf install ncurses
тогда должна быть доступна команда очистки