Я пытаюсь изменить владение папки и подпапок путем ввода любого из них:
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/'
Что я делаю неправильно?
Используйте $USER
вместо $user
.
sudo chown $USER -R /usr/bin/.folder/
user
переменная, вероятно, пуста. Попробуйте $USER
.
$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/'
То сообщение на самом деле информативно, в том, что, когда Вы видите сообщение как этот от команды, где Вы развернули переменные, оно предполагает, что один или несколько Ваших расширенных переменных, возможно, был неумышленно пуст или сброс.
Вы работали 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/
: имя пользователя, так как никакой аргумент имени пользователя еще не был переданДля получения дополнительной информации можно интересоваться: