
Eu criei um arquivo de script chamadolista_negra.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
deste arquivo de script que estou criandosom.lista negra.confarquivo, /etc/modprobe.d
mas recebi /etc/modprobe.d/sound.blacklist.conf: Permission denied
um erro.
Então tentei
echo itsme | sudo -S echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf
mas também não funcionou, então como posso criar um arquivo no /etc/modprobe.d
diretório do meuArquivo de script.
Responder1
Eu pessoalmente usaria tee, que você pode executar como root para anexar aos arquivos:
echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf
Mas isso pode não ser esperado no meio de um roteiro. Se você estiver fazendo coisas que exigem privilégios de root, pode - e não estou dizendo isso com certeza - fazer mais sentido deixar apenas o root executar o script colando isto próximo ao topo do script:
if [[ $EUID -ne 0 ]]; then
echo "Only root can run this. Run again with sudo" 2>&1
exit 1
fi
Responder2
Experimente este comando,
sudo sh -c "echo 'blacklist snd_hda_intel' > /etc/modprobe.d/sound.blacklist.conf"
Responder3
Você também deve incluir o redirecionamento de saída sudo
.
A maneira mais fácil, para mim, de fazer isso é não colocar osudodentro do seu script, mas para executá-lo usandosudo.
Para entender seu problema, se você tiver o seguinte comando: $ sudo " " > /etc/file
Osudoação é apenas executar <command> <params>
, o redirecionamento da saída( >
) acontece fora dosudonesse caso.