Suppressions dans PATH (Shell)

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

  1. Modérateur
    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
    1. 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
      1. Modérateur
        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
      2. 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
      3. Modérateur
        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
      4. 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