Il y a une ligne dans ~/.profile
laquelle est
PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
Je ne suis pas sûr de la dernière i
.
- Dois-je le retirer ??
- N'est-ce pas une erreur de syntaxe ??
bash
environment-variables
Sourire
la source
la source
$PATH
variable d'environnement, mais ce ne sont pas des doublons. Tout au plus, ils sont liés. Cette question est un problème dans~/.profile
lequel il se trouve que c'est juste un caractère supplémentaire dans la ligne où l'$PATH
environnement est assigné.PATH=
ligne~/.profile
- ce qui est la vraie question ici.Réponses:
Non, ce n'est pas une erreur de syntaxe; c'est juste une lettre qui est ajoutée après l'expansion de
$PATH
, car le shell supprime les guillemets ...Ainsi, en plus d'ajouter des répertoires locaux, il a effectivement supprimé l'existant
/snap/bin
de mon PATH et ajouté l'inexistant/snap/bini
.Vous pouvez supprimer le
i
pour réparer votre CHEMIN.Pour voir le changement, vous devrez vous déconnecter et
source ~/.profile
vous reconnecter ou exécuter n'importe quel shell que vous utilisez (ou lancer le shellbash -l
), car il.profile
est lu uniquement par les shells de connexion .Si vous n'avez pas apporté cette modification à vous-
.profile
même, vous souhaiterez peut-être restaurer le fichier par défaut en exécutantCela renomme l'ancien
.profile
.profile.old
(vous pouvez également supprimer le fichier si vous le souhaitez) et le remplace par la version par défaut de votre système/etc/skel
.la source
Je pense que la signification de l'expression suivante n'est pas claire:
La première partie
PATH=
signifie que nous attribuons une nouvelle valeur à la variable (environnement)$PATH
.La deuxième partie est la nouvelle valeur de cette variable. Dans le cas actuel, la variable
$HOME
sera développée avec sa valeur actuelle et à cette valeur sera ajoutée la chaîne/bin:
. Il en va de même pour la partie suivante de la chaîne$HOME/.local/bin:
. Enfin, la valeur actuelle (précédente) de la$PATH
variable sera développée et ajoutée. Le côlon:
joue un rôle de délimiteur dans l'PATH
expression.L'objectif ultime est d'écrire:
PATH=<some additional paths>+<the the current value of $PATH>
. Nous plaçons ces chemins supplémentaires devant la chaîne, car nous voulons que le shell recherche d'abord les exécutables dans ces emplacements et ensuite seulement à l'échelle du système.Le personnage
i
est inutile. Il sera ajouté à la nouvelle valeur de$PATH
et gâchera, comme l'explique @Zanna dans sa réponse .la source
Oui, c'est une erreur de syntaxe, le réel
.profile
devrait ressembler à ceci sauf si vous avez changé les choses (c'est la version 17.10, voir les notes ci-dessous):Cela peut sembler différent dans les anciennes versions d'Ubuntu où la vérification de la
bin
présence du répertoire des utilisateurs n'était pas incluse dans le.profile
. La meilleure façon de vérifier à quoi cela devrait ressembler est de jeter un coup d'œil/etc/skel/.profile
.Donc, pour ajouter comme vous l'avez demandé dans votre commentaire, placez simplement ceci à la fin de votre fichier de profil:
Si jamais vous gâchez complètement votre profil, il y en a une copie où vous pouvez en obtenir un nouveau
/etc/skel/
.la source
/etc/skel/.profile
dans 16.04 semble différent, sans test s'il"$HOME/bin"
existe. Même si c'était une meilleure variante (OMI), elle semble avoir été modifiée en 17.10 - pour une raison ou par erreur.