Как другой пользователь Virgin Media (Великобритания), я могу засвидетельствовать их плохое управление DNS. С другой стороны, кеширование DNS очень распространено; мгновенной конфигурации DNS нигде не существует (то есть, если у вас нет интрасети с внутренним сервером имен). Пара часов - типичная задержка в кешах DNS.
С другой стороны, нет абсолютно ничего, что заставляло бы вас использовать DNS-сервер вашего интернет-провайдера (на самом деле, некоторые интернет-провайдеры предоставляют вам полностью заблокированное оборудование и запрещают прохождение пакетов UDP
, но это не так. случай с Virgin Media). Вам определенно следует использовать сервер имен, которому вы доверяете, а не навязывает ваш интернет-провайдер.
Сервер имен, который я буду использовать в этом примере, - это сервер имен Google ( 8.8.8.8
и 8.8.4.4
). У вас есть два варианта настройки:
Если ваш маршрутизатор имеет параметры конфигурации для DNS, используйте их и установите их на 8.8.8.8
и 8.8.4.4
]. Ваш маршрутизатор - это то, что предоставляет все параметры DHCP
вашим машинам, и серверы DNS находятся в пределах этих параметров.
Если, как и я, вы используете последнюю версию Virgin Media Super Hub , вы не можете изменить конфигурацию DNS маршрутизатора. Один из способов обойти это - настроить VM Super Hub в качестве модема и использовать другой маршрутизатор в качестве эффективного маршрутизатора. Однако для этого вам потребуется / купить дополнительный маршрутизатор.
Если вы не можете изменить конфигурацию серверов имен, которые предоставляет вам маршрутизатор, вы можете вместо этого настроить, какие серверы имен будет использовать ваша машина. Ваш вопрос является пограничным для веб-сайта U&L, поскольку он не спрашивает явно ни о чем, связанном с UNIX. Тем не менее, учитывая тот факт, что мы находимся на U&L, я предполагаю, что вы находитесь на машине * nix.
Конфигурация DNS-преобразователя находится в файле /etc/resolv.conf
, файл необходимо отредактировать следующим образом:
nameserver 8.8.8.8
nameserver 8.8.4.4
Однако, если вы просто отредактируете этот файл, эта конфигурация будет перезаписана службой DCHP
в любой современной системе * nix. Вам также необходимо настроить службу DHCP
так, чтобы она не обновляла информацию DNS, когда она получает ее от маршрутизатора. Наиболее распространенная служба DHCP
сегодня предоставляется пакетом dhcpcd
(я полагаю).
Чтобы настроить dhcpcd
на игнорирование информации DNS, которую он получает от маршрутизатора (и не перезаписывать resolv.conf
), необходимо убедиться, что файл / etc / dhcpcd .conf
не имеет строки без комментариев:
option domain_name_servers
Обратите внимание, что несколько параметров
могут быть установлены в одной строке внутри /etc/dhcpcd.conf
. Вам необходимо убедиться, что domain_name_servers
не присутствует ни в одной из строк, начинающихся с option
.
Вам не нужно $include
из вашего ~/.inputrc
, так как вы можете прочитать файл inputrc в любое время с
bind -f /path/to/global/inputrc
поэтому используйте ваши обычные if [ -r file ]
с этим вместо source
.
На странице руководства сказано, что для интерактивной оболочки входа в систему она читает /etc/profile
и первое найденное из ~/.bash_profile
, ~/.bash_login
, и ~/.profile
.
Для других интерактивных оболочек он читает ~/.bashrc
, а для неинтерактивных - файл $BASH_ENV
, если таковой имеется.
В вашем случае, предположительно, вы используете неинтерактивную оболочку для эмулятора терминала, поэтому читается ~/.bashrc
. Вы можете посмотреть, что происходит, используя strace
и фиктивный дом, например, в /tmp
.
$ touch /tmp/.inputrc /tmp/.bashrc
$ (unset BASH_ENV INPUTRC HISTFILE
HOME=/tmp strace -e open -o /tmp/out bash -i)
Это показывает, что открываются следующие файлы (я удалил некоторые для краткости):
open("/tmp/.bashrc", O_RDONLY) = 3
open("/tmp/.bash_history", O_RDONLY) = -1 ENOENT
open("/tmp/.inputrc", O_RDONLY) = 3
open("/tmp/.bash_history", O_WRONLY|O_CREAT|O_TRUNC, 0600) = 3
Итак, bash будет читать .inputrc
после .bashrc
. Это имеет смысл, так как дает вам время установить INPUTRC
в вашем файле.
Вместо того, чтобы делать это в файле .inputrc
(который не имеет средств для проверки того, что файл действительно существует AFAIK), вы можете установить INPUTRC
переменную окружения в вашем . bashrc
файл:
if [ -r "$GLOBAL_BASHRC" -a -f "$GLOBAL_BASHRC" ]; then
# Load the bashrc
source $GLOBAL_BASHRC
if [ -f /path/to/global/inputrc ]; then
export INPUTRC="/path/to/global/inputrc"
fi
else
echo "Warning: Bashrc file [${GLOBAL_BASHRC}] does not exist!"
fi
Переменная INPUTRC
документирована в руководстве readline
(и в руководстве bash
тоже).