Он возвращает каталог, откуда он вызван/запущен, а не где находится скрипт!
Вот try.sh :
echo "The current working directory: $PWD"
Этот вывод будет более понятен :
[akarpe@ADM-PROD-OMNI ~]$ sh try.sh
The current working directory: /mnt/home/akarpe
[akarpe@ADM-PROD-OMNI ~]$ sh try/try.sh
The current working directory: /mnt/home/akarpe
[akarpe@ADM-PROD-OMNI ~]$ sh ./try.sh
The current working directory: /mnt/home/akarpe
[akarpe@ADM-PROD-OMNI ~]$ sh ./try/try.sh
The current working directory: /mnt/home/akarpe
[akarpe@ADM-PROD-OMNI ~]$ cd try
[akarpe@ADM-PROD-OMNI try]$ sh ./try.sh
The current working directory: /mnt/home/akarpe/try
[akarpe@ADM-PROD-OMNI try]$ sh ../try.sh
The current working directory: /mnt/home/akarpe/try
Создать скрипт в /etc/network/if-up.d/dns
с таким содержимым (в данном примере учитывается только eth0
):
#!/bin/sh
if [ "$IFACE" = "eth0" ];then
for NS in $IF_DNS_NAMESERVERS; do
R="${R}nameserver $NS
"
done
echo "$R" > /etc/resolv.conf
fi
Сделайте его исполняемым с помощью chmod +x /etc/network/if-up.d/dns
.
Каждый раз, когда вы перезагружаете устройство или перезапускаете сетевые службы, resolv.conf
будет создаваться заново. Работает как шарм!
PS :Если вы используете другую директиву/именование, чем dns-nameservers
в /etc/network/interfaces
... например, my-dns
, замените $IF_DNS_NAMESERVERS
на $IF_MY_DNS
. Хотя это здорово знать, я предпочел бы придерживаться соглашений и использовать dns-nameservers
.