フォルダーの所有権の変更が機能しません。

フォルダーの所有権の変更が機能しません。

次のいずれかを入力して、フォルダーとサブフォルダーの所有権を変更しようとしています。

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小文字が機能しない理由

他の人が言っていることを明確にし、拡張する持っている 言った、シェル変数、および環境変数は大文字と小文字が区別されます。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/'

このメッセージは実際には情報提供を目的としており、変数を展開したコマンドからこのようなメッセージが表示される場合、展開した変数の 1 つ以上が意図せず空または未設定になっている可能性があることを示唆しています。

を実行しました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

関連情報