Top.Mail.Ru
Ответы

Bash-скрипт халтурит (или я туплю)

Есть скрипт, сохранённый в файл:

############
#!/bin/sh
sudo su #думаю, все знают, что это
sed '1, 3d' /etc/resolv.conf >/etc/resolv.conf #пытаюсь удалить 3 строки
echo "nameserver 8.8.8.8" | tee -a /etc/resolv.conf #пытаюсь добавить в файл строку
############

Скрипт сделал исполняемым командой chmod ugo+x.
После запуска никакой реакции системы не наблюдается. Но с терминала данные файла редактируются этими же командами без проблем. Что я сделал неправильно?
Помогите, люди добрые, ткните носом.. я на linux перешёл недавно.
Вообще я пытаюсь скриптом изменить dns сервер в файле resolv.conf, ибо openvpn с сей задачей не справляется. А каждый раз вручную прописывать dns надоело.

По дате
По рейтингу
Аватар пользователя
Гений
6лет

Когда ты вводишь команду
sudo su
запускается новый shell с правами суперпользователя. Когда ты вводишь команды вручную, следующую команду ты вводишь в новой копии shell. В этом скрипте происходит иначе: тут все команды выполняются от текущего пользователя.

Я в Linux не шарю. На мой взгляд, решение такое:
sudo script2.sh
тут script2.sh - это второй bash-скрипт, содержащий команды, которые должны выполниться с правами рута.
Или можно задать права для скрипта, чтоб он выполнялся с правами рута, тогда sudo вообще не нужен.