17 votes

Comment supprimer un chemin du chemin du système (`$PATH`) en utilisant les commandes du terminal ?

J'ai ajouté un chemin de répertoire au chemin du système( $PATH ) en courant,

export PATH=$PATH:/home/avinash/Desktop/raj

Maintenant mon chemin ressemble à ceci,

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/avinash/Desktop/raj

Je veux supprimer /home/avinash/Desktop/raj à partir de la variable du chemin du système en utilisant la commande( comme la commande export le fait en ajoutant le chemin ).

1voto

noobie-php Points 1608

export PATH=$PATH:/home/avinash/Desktop/raj (Ici, vous avez ajouté le fichier à la variable chemin).

echo $PATH
Si vous exécutez cette commande, voici le résultat :

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/avinash/Desktop/raj

Comment le supprimer du chemin ? Exécutez simplement

$ export PATH=${PATH/'/home/avinash/Desktop/raj'/}

Il s'agit d'un concept de remplacement de chaîne de caractères.

$ export PATH=${string/substring/replacement}

0voto

David Ledger Points 63

La commande intégrée Shell. export Ne détermine pas si une variable est définie ou non, il détermine si la variable et sa valeur sont également définies dans les sous-processus.

La modification d'une variable, exportée ou non, n'affecte pas le processus parent ou supérieur, donc la modifier dans un script n'a aucun effet à moins que ce script soit exécuté avec source .

Une fonction Shell :

function trimpath {
    PATH=${PATH%:*}
}

coupera le dernier composant de la variable PATH. Son site export n'est pas affecté.

0voto

Jake Baldwin Points 1

Declare -x PATH="/desired/path/you_want" si je ne me trompe pas, cela va mettre à jour ce que vous voulez et c'est à vous de décider ce que ce sera. [Assurez-vous que vous exécutez en tant que root ET en tant qu'utilisateur désiré pour lequel vous voulez que ce changement soit affecté.] Pour être doublement sûr, exécutez ENV ensuite pour vous assurer que le $PATH a bien été modifié comme vous le souhaitez. (Ceci est utilisable pour modifier n'importe quelle sortie que vous obtiendrez lorsque vous exécuterez '/usr/bin/env'. Bien que je ne sache pas si cela est permanent ou non. Dans ce cas, faites comme indiqué ci-dessus et modifiez ~/.bashrc pour que cela reste).

0voto

J'utilise simplement sed, comme ceci

PATH=$(sed "s/\/home\/avinash\/Desktop\/raj//" <<< $PATH)

cela devrait faire l'affaire.

Je vous explique un peu comment cela va fonctionner : Tout d'abord, nous définissons la valeur de la variable PATH= alors nous devons dire d'utiliser la valeur du résultat de la commande suivante comme valeur de cette variable en utilisant simplement $( commande ) après la commande SED sed "s///" le / seront les séparateurs pour cette commande, par défaut nous utilisons / mais vous pouvez définir n'importe quoi comme - o _ . Le premier s est pour remplacer, puis vient le premier séparateur, après vient l'expression que vous recherchez, puis un autre séparateur, puis l'expression que vous voulez remplacer la première (que vous recherchez), puis un autre séparateur (le dernier) et vous pouvez utiliser un argument comme g pour un remplacement global. Le site \ est un caractère de fuite qui est utilisé pour faire comprendre à sed que le prochain / est un littéral et non le séparateur. Le site <<< est pour déposer la variable à la commande sed.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X