Qu'est-ce que c'est $PATH
?
Comment puis-je avoir des commandes / programmes qui ne sont disponibles que pour moi?
J'ai déjà vu ce chemin ~/bin
, mais à quoi sert-il et comment l'utiliser?
environment-variables
Braiam
la source
la source
Réponses:
$ PATH est une variable d'environnement utilisée pour rechercher des commandes. Le ~ est votre répertoire personnel, donc ~ / bin sera / home / user / bin; c'est un répertoire normal.
Lorsque vous exécutez "ls" dans un shell, par exemple, vous exécutez en fait le programme / bin / ls; l'emplacement exact peut différer selon la configuration de votre système. Cela se produit car / bin est dans votre $ PATH.
Pour voir le chemin et trouver où se trouve une commande particulière:
Pour avoir votre propre répertoire bin privé, il vous suffit de l'ajouter au chemin. Pour ce faire, modifiez ~ / .profile (un fichier masqué) pour inclure les lignes ci-dessous. Si les lignes sont commentées, il suffit de les décommenter; s'ils sont déjà là, vous êtes prêt!
Vous devez maintenant créer votre répertoire ~ / bin et, comme .profile est exécuté à la connexion et n'ajoute ~ / bin que s'il existe à ce moment, vous devez vous reconnecter pour voir le CHEMIN mis à jour.
Testons-le:
la source
type
pour voir comment une commande réelle sera résolue par le shell; par exemple:which echo
ettype echo
rapportera différentes choses,which
retourne '/ bin / echo' mais 'type' renvoie que c'est un shell intégré, que le shell préférera au fichier dans '/ bin'.which
est mieux remplacé partype
oucommand
dans des shells interactifs, et il est complètement inutile dans les scripts.$HOME
variable in$PATH
pour une raison quelconque ne fonctionne pas, c'est-à-dire qu'il faut utiliser~
signe à la place.Concernant
~/bin
et commandes / programmes disponibles uniquement pour votre utilisateurLes versions récentes d'Ubuntu incluent le
~/bin
répertoire dans votre$PATH
, mais seulement si le~/bin
répertoire existe.S'il n'existe pas:
Assurez-vous que votre
~/.profile
contient la strophe suivante (la valeur par défaut le fait~/.profile
déjà):Créez le
~/bin
répertoire:Redémarrez votre ordinateur ou forcez bash à relire
~/.profile
:la source
exec -l bash
" astuce. Que fait le-l
drapeau? Je ne trouve pas d'explication dansman exec
.exec -l
exécutera bash en tant que shell de connexion [ wiki.bash-hackers.org/commands/builtin/exec] . En bref, cela oblige bash à relire/etc/profile
et~/.profile
. Une simple exécutionexec bash
ne fera que relire~/.bashrc
.