Suppressions dans PATH (Shell)

endefu Messages postés 21 Statut Membre -  
endefu Messages postés 21 Statut Membre -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. endefu Messages postés 21 Statut Membre 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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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. endefu Messages postés 21 Statut Membre 1
       
      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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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. endefu Messages postés 21 Statut Membre 1
       
      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