необходимо ли просто проверить в сценарии, если он выполняется в интерактивном режиме или нет?
http://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html
Кавычки:
6.3.2 Действительно ли этот Shell является Интерактивным?
Для определения в рамках сценария запуска, работает ли Bash в интерактивном режиме протестируйте значение ‘-’ специальный параметр. Это содержит меня, когда оболочка является интерактивной. Например:
case "$-" in *i*) echo This shell is interactive ;; *) echo This shell is not interactive ;; esac
С другой стороны, сценарии запуска могут исследовать переменный PS1; это сброшено в неинтерактивных оболочках и установлено в интерактивных оболочках. Таким образом:
if [ -z "$PS1" ]; then echo This shell is not interactive else echo This shell is interactive fi
и определите ряд переменных к "_escape_codes _", если это будет интерактивным и к "" в противном случае, и используйте те переменные для colorize вывод в сценарии (в интерактивной среде, у них будут управляющие коды, то в неинтерактивном они ничего не добавят к тексту).
исключая:
case "$-" in
*i*) _bold_="$(printf '\033[1m')"
_norm_="$(printf '\033[0m')"
;;
*) _bold_=""
_norm_=""
;;
esac
echo "this ${_bold_}text${_norm_} is important"
Вы ищете директиву Server =
вместо адреса addrive =
. К сожалению, вам придется указать ваши фактические серверы DNS-сервера, оно не получит их из resolv.conf
(поскольку вы используете NO-RESOLVE, чтобы предотвратить это).
server=/whatsapp.com/8.8.8.8
server=/whatsapp.com/8.8.4.4
server=/example.com/8.8.8.8
server=/example.com/8.8.4.4
⋮
Вы, вероятно, хотите генерировать это с помощью скрипта. И, конечно же, вы можете использовать обычные DNS-серверы вместо Google Public DNS.
В качестве альтернативы вы можете Использовать связывание (хотя обратите внимание, что есть другие конфиги, если ваша цель не фильтрует).