![更改資料夾的所有權不起作用!](https://rvso.com/image/1083740/%E6%9B%B4%E6%94%B9%E8%B3%87%E6%96%99%E5%A4%BE%E7%9A%84%E6%89%80%E6%9C%89%E6%AC%8A%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%81.png)
我正在嘗試透過鍵入以下任一內容來更改資料夾和子資料夾的所有權:
sudo chown $user -R /usr/bin/.folder/
sudo chown $user -R /usr/bin/folder/
sudo chown $user -R /usr/bin/.folder
sudo chown $user -R /usr/bin/folder
但我得到輸出:
chown: missing operand after '/usr/bin/.folder/'
我究竟做錯了什麼?
答案1
為什麼小寫字母$user
不起作用
澄清並擴展其他人的內容有 說、shell 和環境變數區分大小寫。user
和USER
是不同的變量,因此它們的內容(分別擴展到$user
和$USER
)可能不同。通常,沒有user
定義任何變量,並且$user
不會將其擴展為任何內容,而您想要的是$USER
將其擴展為您的用戶名。
此echo
命令通常適合檢查變數的值:
$ echo "$user"
$ echo "$USER"
ek
對於值不包含任何空格的變量,可以刪除引號而不影響輸出。所以如果我願意的話
我可以直接使用。echo $USER
另一種選擇,對於chown
您可能知道自己的用戶名,因此您可以使用它來代替$USER
.如果你這樣做,確保省略該$
標誌。
例如,由於我的用戶名是ek
,我可以使用:
sudo chown ek -R /usr/bin/.folder/
為什麼你會得到那錯誤
您可能想知道為什麼會收到特定的錯誤訊息:
chown: missing operand after '/usr/bin/.folder/'
該訊息實際上提供了豐富的信息,因為當您在擴展變數的命令中看到類似的訊息時,它表明您的一個或多個擴展變數可能無意中為空或未設定。
你運行了sudo chown $user -R /usr/bin/.folder/
,因為user
可能是未定義的,所以$user
擴展為空,它相當於運行:
sudo chown -R /usr/bin/.folder/
您可能知道,該-R
選項對目錄樹中的每個檔案起作用。chown
自從$user
擴張到一無所有,/usr/bin/.folder/
是第一個不可選擇的參數chown
,因此被解釋為指定所需所有權的參數(例如使用者名稱)。/usr/bin/.folder
對此來說不是有效的語法,但該特定錯誤未報告,因為另一個錯誤chown
首先停止:沒有更多參數,因此沒有指定任何chown
操作在。
換句話說,如果我運行sudo chown $USER -R /usr/bin/.folder/
,它會擴展為sudo chown ek -R /usr/bin/.folder/
並chown
以這種方式解釋它的參數:
ek
:用戶名,因為尚未傳遞用戶名參數-R
:遞歸選項(前導-
是chown
知道它是一個選項參數的東西)/usr/bin/.folder/
:要變更所有權的檔案或目錄,因為使用者名稱已傳遞
但如果我運行sudo chown $user -R /usr/bin/.folder
,它會擴展為sudo chown -R /usr/bin/.folder/
並chown
以這種方式解釋它的參數:
-R
: 遞迴選項/usr/bin/.folder/
:用戶名,因為尚未傳遞用戶名參數
進一步閱讀
欲了解更多信息,您可能感興趣:
答案2
請使用$USER
代替$user
.
sudo chown $USER -R /usr/bin/.folder/
答案3
該user
變數可能為空。嘗試$USER
。