使用腳本檔案建立檔案時出現權限被拒絕錯誤

使用腳本檔案建立檔案時出現權限被拒絕錯誤

我創建了一個名為的腳本文件黑名單.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

從我正在創建的這個腳本文件聲音.黑名單.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 ,您可以以 root 身分執行它來附加到檔案:

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>,輸出()的重定向>發生在須藤在這種情況下。

相關內容