
라는 스크립트 파일을 만들었습니다.블랙리스트.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
내 디렉토리 에 파일을 만들 수 있습니까?스크립트 파일.
답변1
저는 개인적으로 파일에 추가하기 위해 루트로 실행할 수 있는 tee를 사용하고 싶습니다.
echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf
그러나 이는 스크립트 중간에 예상되지 않을 수도 있습니다. 루트 권한이 필요한 작업을 수행하는 경우 스크립트 상단 근처에 다음을 추가하여 루트만 스크립트를 실행하도록 하는 것이 더 합리적일 수 있습니다.
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스크립트 내부에서 다음을 사용하여 스크립트를 실행하려면sudo.
문제를 이해하려면 다음 명령이 있는 경우: $ sudo " " > /etc/file
그만큼sudo작업은 실행하기만 하면 <command> <params>
출력( )의 리디렉션이 >
외부에서 발생합니다.sudo이 경우.