Suppressions dans PATH (Shell)

Fermé
endefu Messages postés 21 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 7 septembre 2010 - 19 mai 2010 à 17:45
endefu Messages postés 21 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 7 septembre 2010 - 20 mai 2010 à 14:54
Bonjour,

J'ai quelques problèmes avec mon PATH. J'ai dans le passé rajouter dans mon .bashrc ce code
PATH=/usr/lib/mpich2/bin:${PATH}

Depuis je l'ai supprimé et je pensais que ca allait definitivement supprimer ce chemin dans mon PATH. Mais finalement non. Si je le supprime "manuellement" en faisant par exemple
PATH=$(echo $PATH| sed -e 's/\/usr\/lib\/mpich2\/bin//' -e 's/::/:/')
export PATH

je supprime bien le chemin, mais dès que je ferme et réouvre un terminal, celui ci apparaît à nouveau. Si je comprends bien ce chemin est chargé au demarrage du terminal, mais je ne sais pas ou (puisque je l'ai supprimé dans .bashrc).
Si quelqu'un a une idée, je suis preneur.
Merci beaucoup


2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
19 mai 2010 à 18:01
Salut,

Ta commande supprime le chemin de la variable PATH de ton environnement, mais pas du fichier .bashrc ;-(

Celle-là devrait le faire :

sed -e 's/\/usr\/lib\/mpich2\/bin//' -e 's/::/:/' ~/.bashrc

0
endefu Messages postés 21 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 7 septembre 2010 1
20 mai 2010 à 09:54
Mais j'ai déjà supprimer le chemin de mon .bashrc. ??
Je vous montre mon .bashrc

# .bashrc


# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi


#COMPILATEUR INTEL FORTRAN
#compilateur intel_fortan
source /opt/intel/Compiler/11.0/074/bin/ifortvars.sh ia32
PATH=$PATH:/opt/intel/Compiler/11.0/074/bin
export PATH
#debugger intel fortran
source /opt/intel/Compiler/11.0/074/bin/ia32/idbvars.sh 
PATH=$PATH:/opt/intel/Compiler/11.0/074/bin/ia32
export PATH
#si ifort repond "cannot find g++"
export LC_ALL=C



#DISLIN
DISLIN=/usr/local/dislin    
export DISLIN
PATH=${PATH}:${DISLIN}/bin
export PATH
LD_LIBRARY_PATH=$DISLIN:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

#OPENMPI
OPENMPI=/usr/lib/openmpi
export OPENMPI 
PATH=${OPENMPI}/bin:${PATH}
export PATH
LD_LIBRARY_PATH=${OPENMPI}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

#ALIASES : User specific aliases and functions
. /home/jeremy/.bashrc_alias



#PATH=${PATH}:/home/jeremy/these/Brown/exe-u/nux-u64-i11:/home/jeremy/these/Brown/exe-u/bin


#MPICH2
#MPICH2=/usr/lib/mpich2
#export MPICH2
#PATH=${MPICH2}/bin:${PATH}
#export PATH
#LD_LIBRARY_PATH=${MPICH2}/lib:$LD_LIBRARY_PATH
#export LD_LIBRARY_PATH


Comme vous le voyez à la fin du fichier j'ai commenté deux commandes ou je rajoutais (à l'époque) deux chemins d'environnement. Ces chemins ne devraient donc pas être rajoutés?? Quand je fais echo de mon PATH, c'est assez flippant de voir ca :

/usr/lib/openmpi/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/usr/lib/openmpi/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/usr/lib/mpich2/bin
/usr/kerberos/sbin
/usr/kerberos/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/opt/real/RealPlayer
/opt/intel/Compiler/11.0/074/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/usr/local/dislin/bin
/home/jeremy/bin
/opt/real/RealPlayer
/opt/intel/Compiler/11.0/074/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/usr/local/dislin/bin


Y'a plein de doublons et il reste la ligne que j'ai supprimé de mon .bashrc :
/usr/lib/mpich2/bin

Encore plus flippant, hier soir je n'avais qu'une seule fois la ligne
/usr/lib/openmpi/bin

et j'avais aussi deux lignes (qui ont disparu maintenant, alors que j'ai rien changé)
/home/jeremy/these/Brown/exe-u/nux-u64-i11
/home/jeremy/these/Brown/exe-u/bin


Je ne comprends plus rien :s. J'ai l'impression qu'il charge des PATH via un autre fichier .bash qui contientrait les anciennes commandes que j'avais mis dans mon .bashrc.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
20 mai 2010 à 10:37
Effectivement ;-\

Déjà aller voir ce qu'il y a dans "/etc/bashrc".
Jeter un oeil aux ".bash_profile, /etc/profile, etc."

Affiche aussi ton environnement (env).
0
endefu Messages postés 21 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 7 septembre 2010 1
Modifié par endefu le 20/05/2010 à 11:12
1) d'abord mon .bash_profile :
# .bash_profile 

# Get the aliases and functions 
if [ -f ~/.bashrc ]; then 
 . ~/.bashrc 
fi 

# User specific environment and startup programs 

PATH=$PATH:$HOME/bin 

export PATH 


ca ne rajoute au PATH que
$HOME/bin
.

2) Mon /etc/bashrc

# /etc/bashrc 

# System wide functions and aliases 
# Environment stuff goes in /etc/profile 

# By default, we want this to get set. 
# Even for non-interactive, non-login shells. 
if [ $UID -gt 99 ] && [ "'id -gn'" = "'id -un'" ]; then 
    umask 002 
else 
    umask 022 
fi 

# are we an interactive shell? 
if [ "$PS1" ]; then 
    case $TERM in 
    xterm*) 
        if [ -e /etc/sysconfig/bash-prompt-xterm ]; then 
            PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm 
        else 
            PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"' 
        fi 
        ;; 
    screen) 
        if [ -e /etc/sysconfig/bash-prompt-screen ]; then 
            PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen 
        else 
            PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"' 
        fi 
        ;; 
    *) 
        [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default 
        ;; 
    esac 
    # Turn on checkwinsize 
    shopt -s checkwinsize 
    [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " 
fi 

if ! shopt -q login_shell ; then # We're not a login shell 
    # Need to redefine pathmunge, it get's undefined at the end of /etc/profile 
    pathmunge () { 
        if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then 
            if [ "$2" = "after" ] ; then 
                PATH=$PATH:$1 
            else 
                PATH=$1:$PATH 
            fi 
        fi 
    } 

    # Only display echos from profile.d scripts if we are no login shell 
    # and interactive - otherwise just process them to set envvars 
    for i in /etc/profile.d/*.sh; do 
        if [ -r "$i" ]; then 
            if [ "$PS1" ]; then 
                . $i 
            else 
                . $i >/dev/null 2>&1 
            fi 
        fi 
    done 

    unset i 
    unset pathmunge 
fi 
# vim:ts=4:sw=4 


Celui ci je comprend rien à ce qui fait, il a pas l'air de rajouter des truc dans mon PATH puisque pathmunge n'est pas utilisé

3) Mon /etc/profile

# /etc/profile 

# System wide environment and startup programs, for login setup 
# Functions and aliases go in /etc/bashrc 

pathmunge () { 
    if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then 
       if [ "$2" = "after" ] ; then 
          PATH=$PATH:$1 
       else 
          PATH=$1:$PATH 
       fi 
    fi 
} 

# ksh workaround 
if [ -z "$EUID" -a -x /usr/bin/id ]; then 
    EUID='id -u' 
    UID='id -ru' 
fi 

# Path manipulation 
if [ "$EUID" = "0" ]; then 
    pathmunge /sbin 
    pathmunge /usr/sbin 
    pathmunge /usr/local/sbin 
else 
    pathmunge /usr/local/sbin after 
    pathmunge /usr/sbin after 
    pathmunge /sbin after 
fi 

if [ -x /usr/bin/id ]; then 
    USER="'id -un'" 
    LOGNAME=$USER 
    MAIL="/var/spool/mail/$USER" 
fi 

HOSTNAME='/bin/hostname 2>/dev/null' 
HISTSIZE=1000 

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE 

for i in /etc/profile.d/*.sh ; do 
    if [ -r "$i" ]; then 
        if [ "$PS1" ]; then 
            . $i 
        else 
            . $i >/dev/null 2>&1 
        fi 
    fi 
done 

unset i 
unset pathmunge 


Ici il semble rajouter /sbin , /usr/sbin , /usr/local/sbin.


4) Mon .bash_logout est vide


5) Mon env

MKLROOT=/opt/intel/Compiler/11.0/074/mkl 
MANPATH=/opt/intel/Compiler/11.0/074/mkl/man:/opt/intel/Compiler/11.0/074/man:/opt/intel/Compiler/11.0/074/mkl/man:/opt/intel/Compiler/11.0/074/man:/usr/share/man/mpich2:/usr/share/man:/usr/local/share/man 
ORBIT_SOCKETDIR=/tmp/orbit-jeremy 
MPI_INCLUDE=/usr/include/mpich2-i386 
HOSTNAME=phnpct227.extra.cea.fr 
IMSETTINGS_INTEGRATE_DESKTOP=yes 
INTEL_LICENSE_FILE=/opt/intel/Compiler/11.0/074/licenses:/opt/intel/licenses:/home/jeremy/intel/licenses:/opt/intel/Compiler/11.0/074/licenses:/opt/intel/licenses:/home/jeremy/intel/licenses 
SHELL=/bin/bash 
TERM=xterm 
HISTSIZE=1000 
XDG_SESSION_COOKIE=8ad42f3c0367c46dfeb5afb2497dfcf3-1274345261.472622-1053536043 
LIBRARY_PATH=/opt/intel/Compiler/11.0/074/mkl/lib/32:/opt/intel/Compiler/11.0/074/mkl/lib/32 
GTK_RC_FILES=/etc/gtk/gtkrc:/home/jeremy/.gtkrc-1.2-gnome2 
WINDOWID=56623789 
FPATH=/opt/intel/Compiler/11.0/074/mkl/include:/opt/intel/Compiler/11.0/074/mkl/include 
LC_ALL=C 
IMSETTINGS_MODULE=none 
USER=jeremy 
MPI_PYTHON_SITEARCH=/usr/lib/python2.6/site-packages/mpich2 
LS_COLORS=rs=0:di=01;34:ln=01;36:hl=44;37:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36: 
LD_LIBRARY_PATH=/usr/lib/openmpi/lib:/usr/local/dislin:/opt/intel/Compiler/11.0/074/mkl/lib/32:/opt/intel/Compiler/11.0/074/lib/ia32:/usr/lib/openmpi/lib:/usr/local/dislin:/opt/intel/Compiler/11.0/074/mkl/lib/32:/opt/intel/Compiler/11.0/074/lib/ia32:/usr/lib/mpich2/lib 
CPATH=/opt/intel/Compiler/11.0/074/mkl/include:/opt/intel/Compiler/11.0/074/mkl/include 
SSH_AUTH_SOCK=/tmp/keyring-IGQtRq/socket.ssh 
GNOME_KEYRING_SOCKET=/tmp/keyring-IGQtRq/socket 
USERNAME=jeremy 
SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/2209,unix/unix:/tmp/.ICE-unix/2209 
MPI_LIB=/usr/lib/mpich2/lib 
NLSPATH=/opt/intel/Compiler/11.0/074/idb/ia32/locale/%l_%t/%N:/opt/intel/Compiler/11.0/074/mkl/lib/32/locale/%l_%t/%N:/opt/intel/Compiler/11.0/074/idb/ia32/locale/%l_%t/%N:/opt/intel/Compiler/11.0/074/lib/ia32/locale/%l_%t/%N:/opt/intel/Compiler/11.0/074/idb/ia32/locale/%l_%t/%N:/opt/intel/Compiler/11.0/074/mkl/lib/32/locale/%l_%t/%N:/opt/intel/Compiler/11.0/074/idb/ia32/locale/%l_%t/%N:/opt/intel/Compiler/11.0/074/lib/ia32/locale/%l_%t/%N 
PATH=/usr/lib/openmpi/bin:/opt/intel/Compiler/11.0/074/bin/ia32:/usr/lib/openmpi/bin:/opt/intel/Compiler/11.0/074/bin/ia32:/usr/lib/mpich2/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/real/RealPlayer:/opt/intel/Compiler/11.0/074/bin:/opt/intel/Compiler/11.0/074/bin/ia32:/usr/local/dislin/bin:/home/jeremy/bin:/opt/real/RealPlayer:/opt/intel/Compiler/11.0/074/bin:/opt/intel/Compiler/11.0/074/bin/ia32:/usr/local/dislin/bin 
DESKTOP_SESSION=gnome 
MAIL=/var/spool/mail/jeremy 
MPI_BIN=/usr/lib/mpich2/bin 
QT_IM_MODULE=xim 
MPI_COMPILER=mpich2-i386 
PWD=/home/jeremy 
_LMFILES_=/usr/share/Modules/modulefiles/mpich2-i386 
XMODIFIERS=@im=none 
KDE_IS_PRELINKED=1 
LANG=fr_FR.UTF-8 
GNOME_KEYRING_PID=2193 
GDM_LANG=fr_FR.UTF-8 
MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles 
LOADEDMODULES=mpich2-i386 
KDEDIRS=/usr 
GDMSESSION=gnome 
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass 
MPI_SYSCONFIG=/etc/mpich2-i386 
HOME=/home/jeremy 
DISLIN=/usr/local/dislin 
SHLVL=2 
GNOME_DESKTOP_SESSION_ID=this-is-deprecated 
KMIX_PULSEAUDIO_DISABLE=1 
MPI_SUFFIX=_mpich2 
MPI_MAN=/usr/share/man/mpich2 
LOGNAME=jeremy 
OPENMPI=/usr/lib/openmpi 
CVS_RSH=ssh 
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-E9gIEP6qHD,guid=2b191d2f49137220e4035fd74bf4f72d 
MPI_HOME=/usr/lib/mpich2 
MODULESHOME=/usr/share/Modules 
MPI_FORTRAN_MOD_DIR=/usr/include/mpich2-i386 
LESSOPEN=|/usr/bin/lesspipe.sh %s 
DISPLAY=:0.0 
INCLUDE=/opt/intel/Compiler/11.0/074/mkl/include:/opt/intel/Compiler/11.0/074/mkl/include 
G_BROKEN_FILENAMES=1 
XAUTHORITY=/var/run/gdm/auth-for-jeremy-EWkNjf/database 
COLORTERM=gnome-terminal 
module=() {  eval '/usr/bin/modulecmd bash $*' 
} 
_=/usr/bin/env 


Voilà, moi je suis perdu. En soit c'est pas dérangeant d'avoir des doublons (enfin je crois) mais c'est sacrement crados dans ce PATH.

PS: désolé pour le message de 3km
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
20 mai 2010 à 12:15
Voilà ce que tu as en double (et le nombre de fois) :

$ echo "$VAR" | sed 's/:/\n/g' | sort | uniq -dc
      2 /opt/intel/Compiler/11.0/074/bin
      4 /opt/intel/Compiler/11.0/074/bin/ia32
      2 /opt/real/RealPlayer
      2 /usr/lib/openmpi/bin


Tu devrais regarder dans ton .bashrc ce que les différents "source" rajoute dans ton environnement ;-\
0
endefu Messages postés 21 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 7 septembre 2010 1
20 mai 2010 à 14:54
Bien vu, en effet quand je faisais "source" je mettais déjà dans mon PATH :
/opt/intel/Compiler/11.0/074/bin/ia32

Du coup j'ai supprimer dans mon .bashrc les lignes :
PATH=$PATH:/opt/intel/Compiler/11.0/074/bin
export PATH
PATH=$PATH:/opt/intel/Compiler/11.0/074/bin/ia32
export PATH

(la premiere parceque elle ne servait à rien en fait).
Ensuite j'ai coupé le terminal et j'en ai relancé un nouveau j'ai obtenu pour le path:

/usr/lib/openmpi/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/usr/lib/openmpi/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/usr/lib/mpich2/bin
/usr/kerberos/sbin
/usr/kerberos/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/opt/real/RealPlayer
/opt/intel/Compiler/11.0/074/bin/ia32
/opt/intel/Compiler/11.0/074/bin
/usr/local/dislin/bin
/home/jeremy/bin
/opt/real/RealPlayer
/usr/local/dislin/bin

Par rapport à avant j'ai eu deux lignes en moins. Ensuite j'ai éteind et rallumé l'ordi et j'ai eu

/usr/lib/openmpi/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/usr/lib/openmpi/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/usr/lib/mpich2/bin
/usr/kerberos/sbin
/usr/kerberos/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/opt/real/RealPlayer
/usr/local/dislin/bin
/home/jeremy/bin
/opt/real/RealPlayer
/usr/local/dislin/bin

Du coup il me semble que c'est comme si j'ajoutais deux fois :
/usr/lib/openmpi/bin
/opt/intel/Compiler/11.0/074/bin/ia32
/opt/real/RealPlayer
/usr/local/dislin/bin

Sachant que je ne sais pas du tout ou est ce que j'ai mis "opt/real/RealPlayer", car il n'y est pas dans mon .bashrc. Il me reste enfin toujours le pb de
 /usr/lib/mpich2/bin 
que je voulais supprimer.
0