Я создал файл сценария, названный black_list.sh.
#!/bin/bash
default_card=`head -1 /proc/asound/modules`
echo $default_card
if [ ! -e /etc/modprobe.d/sound.blacklist.conf ] && [[ "$default_card" =~ "snd_hda_intel" ]]; then
echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf ---> not working
else
echo "Default sound card(snd_hda_intel) is already added in black list";
fi
из этого файла сценария я создаю sound.blacklist.conf файл в /etc/modprobe.d
но я добрался /etc/modprobe.d/sound.blacklist.conf: Permission denied
ошибка.
Так попробованный
echo itsme | sudo -S echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf
но это также не работало поэтому, как может создать файл в /etc/modprobe.d
каталог из моего файла сценария.
Я лично использовал бы мишень, которую можно выполнить как корень для добавления в файлы:
echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf
Но это не могло бы ожидаться на полпути через сценарий. При выполнении вещей, которые требуют полномочий пользователя root, это могло бы — и я не говорю, что это наверняка — имеет больше смысла только позволять корню запустить скрипт путем засовывания этой близости верхняя часть сценария:
if [[ $EUID -ne 0 ]]; then
echo "Only root can run this. Run again with sudo" 2>&1
exit 1
fi
Попробуйте эту команду,
sudo sh -c "echo 'blacklist snd_hda_intel' > /etc/modprobe.d/sound.blacklist.conf"
Необходимо включить перенаправление вывода в sudo
также.
Самый легкий путь, для меня, чтобы сделать это не должно помещать sudo в Вашем сценарии, но запускать Ваш скрипт с помощью sudo.
Для понимания проблемы, если у Вас есть следующая команда: $ sudo "">/etc/file
sudo действие только для выполнения <command> <params>
, перенаправление вывода (>
) происходит из sudo в этом случае.