
Ich habe eine Skriptdatei namensschwarze_liste.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
aus dieser Skriptdatei erstelle ichsound.blacklist.confDatei drin, /etc/modprobe.d
aber ich habe /etc/modprobe.d/sound.blacklist.conf: Permission denied
einen Fehler bekommen.
So müde
echo itsme | sudo -S echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf
aber es hat auch nicht funktioniert, also wie kann ich eine Datei im /etc/modprobe.d
Verzeichnis erstellen von meinemSkriptdatei.
Antwort1
Ich persönlich würde tee verwenden, das Sie als Root ausführen können, um an Dateien anzuhängen:
echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf
Aber das erwartet man vielleicht nicht mitten in einem Skript. Wenn Sie Dinge tun, die Root-Rechte erfordern, ist es vielleicht sinnvoller – und das sage ich nicht mit Sicherheit –, das Skript nur von Root ausführen zu lassen, indem Sie Folgendes an den Anfang des Skripts setzen:
if [[ $EUID -ne 0 ]]; then
echo "Only root can run this. Run again with sudo" 2>&1
exit 1
fi
Antwort2
Versuchen Sie diesen Befehl,
sudo sh -c "echo 'blacklist snd_hda_intel' > /etc/modprobe.d/sound.blacklist.conf"
Antwort3
Sie müssen die Ausgabeumleitung sudo
auch darin einschließen.
Der einfachste Weg, dies zu tun, ist für mich, diesudoinnerhalb Ihres Skripts, sondern um Ihr Skript auszuführen mitsudo.
Um Ihr Problem zu verstehen, müssen Sie den folgenden Befehl ausführen: $ sudo " " > /etc/file
DersudoAktion ist nur ausführen <command> <params>
, die Umleitung der Ausgabe ( >
) geschieht aus demsudoin diesem Fall.