Изменение владения папки, не работающей!

Я пытаюсь изменить владение папки и подпапок путем ввода любого из них:

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/'

Что я делаю неправильно?

5
задан 7 October 2014 в 20:35

3 ответа

Используйте $USER вместо $user.

sudo chown $USER -R /usr/bin/.folder/
5
ответ дан 17 November 2019 в 10:44

user переменная, вероятно, пуста. Попробуйте $USER.

2
ответ дан 17 November 2019 в 10:44

Почему нижний регистр $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/: имя пользователя, так как никакой аргумент имени пользователя еще не был передан

Дальнейшее чтение

Для получения дополнительной информации можно интересоваться:

9
ответ дан 23 November 2019 в 08:41

Другие вопросы по тегам:

Похожие вопросы: