GNU/Linux >> Tutoriels Linux >  >> Linux

Comment ajouter proprement à $path ?

J'aimerais trouver un moyen d'ajouter des éléments à $PATH, à l'échelle du système ou pour un utilisateur individuel, sans potentiellement ajouter le même chemin plusieurs fois.

Une des raisons de vouloir faire cela est que des ajouts puissent être faits dans .bashrc , qui ne nécessite pas de connexion, et est également plus utile sur les systèmes qui utilisent (par exemple) lightdm , qui n'appelle jamais .profile .

Je suis au courant des questions concernant la façon de nettoyer les doublons de $PATH, mais Je ne veux pas supprimer les doublons . Je voudrais un moyen d'ajouter des chemins uniquement s'ils ne sont pas déjà présents.

Réponse acceptée :

Supposons que le nouveau chemin que nous voulons ajouter soit :

new=/opt/bin

Ensuite, en utilisant n'importe quel shell POSIX, nous pouvons tester pour voir si new est déjà dans le chemin et ajoutez-le si ce n'est pas le cas :

case ":${PATH:=$new}:" in
    *:"$new":*)  ;;
    *) PATH="$new:$PATH"  ;;
esac

Notez l'utilisation des deux-points. Sans les deux-points, nous pourrions penser que, disons, new=/bin était déjà dans le chemin car il correspondait au modèle sur /usr/bin . Alors que les PATH ont normalement de nombreux éléments, les cas particuliers de zéro et un élément dans le PATH sont également gérés. Le cas où le PATH n'a initialement aucun élément (étant vide) est géré par l'utilisation de ${PATH:=$new} qui assigne PATH à $new s'il est vide. Définir les valeurs par défaut des paramètres de cette manière est une fonctionnalité de tous les shells POSIX :voir la section 2.6.2 de la documentation POSIX.)

Une fonction appelable

Pour plus de commodité, le code ci-dessus peut être mis dans une fonction. Cette fonction peut être définie sur la ligne de commande ou, pour qu'elle soit disponible en permanence, placée dans le script d'initialisation de votre shell (pour les utilisateurs de bash, ce serait ~/.bashrc ):

pupdate() { case ":${PATH:=$1}:" in *:"$1":*) ;; *) PATH="$1:$PATH" ;; esac; }

Pour utiliser cette fonction de mise à jour du chemin pour ajouter un répertoire au PATH actuel :

pupdate /new/path

Linux
  1. Comment faire en sorte que `sudo` préserve $path ?

  2. Linux - Ldd ne trouve pas de chemin, comment ajouter ?

  3. Comment puis-je ajouter dir à $PATH dans Makefile?

  4. Comment ajouter un fichier .so au java.library.path sous Linux

  5. Comment ajouter des répertoires spécifiques au chemin de recherche updatedb (localiser) ?

Comment ajouter un utilisateur à un groupe sous Linux

Comment ajouter un répertoire à PATH sous Linux

Comment ajouter un stockage externe à ownCloud 9

Comment ajouter un répertoire à PATH sous Linux [Astuce rapide]

Comment ajouter une route sous Linux

Linux :ajouter un répertoire à PATH