web-dev-qa-db-fra.com

Ajouter n'importe quel répertoire en cours './' au chemin de recherche sous Linux

Comment ajoutez-vous un répertoire en cours './' au chemin de recherche des exécutables sous Linux?

24
Brian Mckinlay

Je sais que c'est une vieille réponse, mais si quelqu'un d'autre tombe sur cette question via Google, comme moi, voici une explication plus détaillée.

Si vous voulez que le chemin de recherche contienne la valeur pwd au moment où vous définissez le chemin de recherche, faites:

export PATH=$PATH:$(pwd)

Donc, si pwd est /home/me/tmp, PATH sera défini sur $PATH:/home/me/tmp

Cependant, si vous voulez que votre répertoire de travail actuel soit au moment où vous exécutez une commande (par exemple, la valeur de pwd est à tout moment dans le chemin de recherche), faites:

export PATH=$PATH:.

Ainsi, si pwd est /home/me/tmp, PATH sera défini sur $PATH:.. Si votre répertoire de travail actuel contient un script appelé foo, alors il sera inséré dans votre PATH. Si vous remplacez les répertoires par ceux qui ne contiennent pas foo, "foo" ne sera plus trouvé dans le PATH.

Notez que le répertoire de travail actuel dans votre PATH constitue un risque potentiel pour la sécurité.

33
Justin Doyle

Si vous voulez de manière permanente ajouter le répertoire dans lequel vous vous trouvez actuellement à la variable PATH, vous pouvez utiliser

$ echo "export PATH=\$PATH:$(pwd)" >> ~/.bashrc

qui étendra $(pwd) à la chaîne de caractères de votre répertoire actuel et ajoutera la ligne citée à votre bashrc. Notez que \ dans \$PATH est nécessaire pour échapper à l'extension de $PATH à sa valeur actuelle.

$ pwd
/path/to/suuuuuuuuuuuuuuuuuuuuper/long/foo/directory/bin

$ echo "export PATH=\$PATH:$(pwd)" >> ~/.bashrc

$ tail ~/.bashrc -n 1
export PATH=$PATH:/path/to/suuuuuuuuuuuuuuuuuuuuper/long/foo/directory/bin
6
Matthew Woo

Pour le répertoire actuel, vous pouvez simplement utiliser un nom de répertoire de longueur nulle (null). Vous pouvez utiliser un deux-points, initial ou final, ou un double-colon. Cela provient de la page de manuel bash, man bash:

PATH   The  search path for commands.  It is a colon-separated list of
       directories in which the Shell looks for commands (see COMMAND EXECUTION
       below).  A zero-length (null) directory name in the value of PATH
       indicates the current directory.  A null directory name may appear as two
       adjacent colons, or as an initial or trailing colon. The default path
       is system-dependent, and is set by the administrator who installs bash.
       A common value is
       ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
1
dosentmatter
export PATH=$PATH:$PWD 

fonctionne avec bash 4.3.48

1
gerardw

C'est une vieille question, mais je pensais y ajouter quelque chose pour ceux qui utilisent le CSH ou le TCSH.

Si vous ajoutez les éléments suivants à votre fichier .cshrc ou .tcshrc, le répertoire en cours sera ajouté à la variable du chemin d’environnement.

setenv PATH {$PATH}:.
1
MBW