J'essaie de changer la propriété d'un dossier et de sous-dossiers en tapant l'un de ces éléments:
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
Mais je reçois la sortie:
chown: missing operand after '/usr/bin/.folder/'
Qu'est-ce que je fais mal?
$user
ne fonctionnent pasPour clarifier et développer ce que les autres ontdit , les variables d'environnement et d'environnement sont sensibles à la casse. user
et USER
sont des variables différentes, donc leur contenu (auquel $user
et $USER
se développent, respectivement) peut être différent. En règle générale, aucune variable nommée user
n'est définie et $user
est étendu à zéro, alors que vous souhaitez utiliser, c'est $USER
qui serait étendu à votre nom d'utilisateur.
La commande echo
convient généralement à la vérification de la valeur d'une variable:
$ echo "$user"
$ echo "$USER"
ek
Pour les variables dont les valeurs ne contiennent aucun espace, les guillemets peuvent être supprimés sans affecter la sortie.
J'aurais donc pu simplement utiliser echo $USER
si je le voulais.
chown
name__Vous connaissez probablement votre propre nom d'utilisateur, vous pouvez donc l'utiliser à la place de $USER
. Si vous faites cela, veillez à omettre le signe $
.
Par exemple, étant donné que mon nom d'utilisateur est ek
name__, je pourrais utiliser:
Sudo chown ek -R /usr/bin/.folder/
Vous vous demandez peut-être pourquoi vous obtenez ce message d'erreur particulier:
chown: missing operand after '/usr/bin/.folder/'
Ce message est en fait informatif. En effet, lorsque vous voyez un message comme celui-ci dans une commande dans laquelle vous avez développé des variables, cela suggère qu'une ou plusieurs de vos variables développées ont peut-être été involontairement vides ou non définies.
Vous avez exécuté Sudo chown $user -R /usr/bin/.folder/
, et comme user
était probablement indéfini, $user
a été étendu à rien et cela équivaut à exécuter:
Sudo chown -R /usr/bin/.folder/
L'option -R
fait que chown
agit sur chaque fichier d'une arborescence de répertoires, comme vous le savez probablement. $user
étant devenu nul, /usr/bin/.folder/
était le premier argument non-option à chown
et était donc interprété comme l'argument spécifiant le propriétaire souhaité (tel qu'un Nom d'utilisateur). /usr/bin/.folder
n'est pas une syntaxe valide pour cela, mais cette erreur particulière n'a pas été signalée car une erreur différente a arrêté chown
en premier: il n'y avait plus d'arguments, et il n'y avait donc aucun paramètre spécifié pour que chown
s'exécute sur .
En d'autres termes, si j'exécutais Sudo chown $USER -R /usr/bin/.folder/
, il serait étendu à Sudo chown ek -R /usr/bin/.folder/
et chown
interpréterait ses arguments de la manière suivante:
ek
name__: nom d'utilisateur, car aucun argument de nom d'utilisateur n'a encore été passé-R
: option récursive (le -
qui précède est ce qui permet à chown
de savoir que c'est un argument d'option)/usr/bin/.folder/
: fichier ou répertoire sur lequel changer de propriétaire, puisque le nom d'utilisateur a déjà été transmisMais si j’exécutais Sudo chown $user -R /usr/bin/.folder
, il serait étendu à Sudo chown -R /usr/bin/.folder/
et chown
interpréterait ses arguments de la manière suivante:
-R
: option récursive/usr/bin/.folder/
: nom d'utilisateur, car aucun argument de nom d'utilisateur n'a encore été passéPour plus d'informations, vous pouvez être intéressé par:
Veuillez utiliser $USER
au lieu de $user
.
Sudo chown $USER -R /usr/bin/.folder/
La variable user
est probablement vide. Essayez $USER
.