Вы вводите переменную напрямую, а затем оболочка интерпретирует то, что вы ввели как команду, и ищет записи в вашей переменной $PATH для команды с таким же именем. Поскольку в вашем $PATH нет записей с именем BASH и BASH _VERSINFO, вы получили сообщение об ошибке «команда не найдена». pwd
и hostname
, с другой стороны, являются допустимыми командами, как вы обнаружили.
Вместо этого вы должны ввести команду для печати переменных (, как правило, echo
или printf
, обе оболочки встроены -в ), и предоставить переменную, которую вы хотите проверить, в качестве аргумента команды. Обратите внимание, что имена команд часто полностью состоят из строчных букв, а переменные среды оболочки часто состоят только из прописных букв.
Чтобы отобразить значения переменных, которые вы упомянули, попробуйте что-то вроде следующего:
$ echo "$BASH"
/bin/bash
$ for i in {0..4}; do printf "%d\t%s\n" "$i" "${BASH_VERSINFO[$i]}"; done
0 4
1 4
2 12
3 1
4 release
Для печати переменных массива используется синтаксис «${ARR _NAME[$index]}». Индексы Bash основаны на 0 -. В общем, вы должны инкапсулировать переменные (, включая массивы ), в двойные кавычки, чтобы избежать нежелательного поведения (пропуск кавычек эквивалентен оператору разделения -glob, как описано здесь).
Это не вывод команды, это сообщения журнала ядра. Поскольку сообщения исходят не от команды, на них не влияет перенаправление.
Сообщения журнала ядра обычно помещаются в файлы журнала, а важные сообщения дополнительно отображаются на консоли. То, что именно означают «важно» и «консоль», зависит от конфигурации ведения журнала. Если вы используете sysklogd, файл конфигурации — /etc/syslog.conf
. Если вы используете rsyslog, это /etc/rsyslog.conf
и /etc/rsyslog.d/*
. Если вы используете встроенный -systemd для ведения журнала, это /etc/systemd/journal.conf
. Ядро также может выводить журналы на консоль напрямую, минуя демон ведения журналов, который можно настроить с помощью dmesg --console-…
(, но обычно это делается косвенно через конфигурацию демона ведения журналов ).