
というスクリプトファイルを作成しましたブラックリスト。
#!/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
私が作成しているこのスクリプトファイルからサウンドブラックリストファイルを入力し/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
しかし、それは機能しなかったため、ディレクトリにファイルを作成するにはどうすればいいでしょうか?スクリプトファイル。
答え1
私は個人的に、ファイルに追加するために root として実行できる tee を使用します。
echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf
しかし、スクリプトの途中では、それが期待できないかもしれません。root 権限を必要とする操作を行う場合、スクリプトの先頭近くに次のコードを追加して、root のみがスクリプトを実行できるようにする方が理にかなっている可能性があります (これは確実なことではありません)。
if [[ $EUID -ne 0 ]]; then
echo "Only root can run this. Run again with sudo" 2>&1
exit 1
fi
答え2
このコマンドを試してください。
sudo sh -c "echo 'blacklist snd_hda_intel' > /etc/modprobe.d/sound.blacklist.conf"
答え3
出力リダイレクトも囲む必要がありますsudo
。
私にとって、これを行う最も簡単な方法は、須藤スクリプト内では、スクリプトを実行するには須藤。
問題を理解するには、次のコマンドを実行してください: $ sudo " " > /etc/file
の須藤アクションは を実行するだけなので<command> <params>
、出力のリダイレクト(>
)は の外で行われます。須藤この場合。