Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/02/2011, à 19:14

XavierCo

Which ne vois pas les alias

Bonjour,

Je viens d'installer ubuntu 10.04 sur un PC tout neuf, (Azus motherboard sais pas quoi, AMD phenom 6c....) Bref je pense pas que le config entre en jeu ici.

Alors comme dab j'ai définis quelques alias. entre autre:

alias mpif90='/opt/openmpi-1.4.3/bin/mpif90'
alias mpirun='/opt/openmpi-1.4.3/bin/mpirun'

xavier@??:~$ mpif90 -v
Version 12.0.2
xavier@??:~$ mpirun
mpirun (Open MPI) 1.4.3

Donc ça marche! sauf que :
xavier@??:~$ which mpif90
xavier@??:~$
ET
xavier@?:~$ which mpirun
/opt/intel/composerxe-2011.2.137/mpirt/bin/intel64/mpirun
c'est pas le bon!

Ce qui occasionne de gros problemes lorsque je les utilise depuis un script:
.......
mpif90 -O3 -72 -fno-alias -i4 -r8 -fp-model precise -I/opt/openmpi-1.4.3/include  -o mpc mpc_.f
make: mpif90 : commande introuvable
make: *** [mpc] Erreur 127
......

ça fait quelques années que je passe mais journées dernière un Linux, et plus particulièrement ubuntu, et j'ai jamais vu ça.

Toute idée plus que bien venu.


Sur tout mes autres PC:
[xavier@***** ~]$ which mpif90
alias mpif90='/share/apps/openmpi-1.4.3/bin/mpif90'
    /share/apps/openmpi-1.4.3/bin/mpif90

Hors ligne

#2 Le 25/02/2011, à 20:18

FRUiT

Re : Which ne vois pas les alias

Tu as du faire quelque chose dans tes "autres pc" car je crois que par défaut which ne cherche pas les alias.
Voici à quoi ressemble /bin/which chez moi :

#! /bin/sh
set -ef

if test -n "$KSH_VERSION"; then
    puts() {
        print -r -- "$*"
    }
else
    puts() {
        printf '%s\n' "$*"
    }
fi

ALLMATCHES=0

while getopts a whichopts
do
        case "$whichopts" in
                a) ALLMATCHES=1 ;;
                ?) puts "Usage: $0 [-a] args"; exit 2 ;;
        esac
done
shift $(($OPTIND - 1))

if [ "$#" -eq 0 ]; then
 ALLRET=1
else
 ALLRET=0
fi
case $PATH in
    (*[!:]:) PATH="$PATH:" ;;
esac
for PROGRAM in "$@"; do
 RET=1
 IFS_SAVE="$IFS"
 IFS=:
 case $PROGRAM in
  */*)
   if [ -f "$PROGRAM" ] && [ -x "$PROGRAM" ]; then
    puts "$PROGRAM"
    RET=0
   fi
   ;;
  *)
   for ELEMENT in $PATH; do
    if [ -z "$ELEMENT" ]; then
     ELEMENT=.
    fi
    if [ -f "$ELEMENT/$PROGRAM" ] && [ -x "$ELEMENT/$PROGRAM" ]; then
     puts "$ELEMENT/$PROGRAM"
     RET=0
     [ "$ALLMATCHES" -eq 1 ] || break
    fi
   done
   ;;
 esac
 IFS="$IFS_SAVE"
 if [ "$RET" -ne 0 ]; then
  ALLRET=1
 fi
done

exit "$ALLRET"

Et :

> grep 'cp=' /etc/bash_aliases
alias cp='cpmon'
> alias cp
alias cp='cpmon'

> grep 'shred' /etc/bash_aliases
alias shred='shred -n 65 -z -u -v -f'
> alias shred
alias shred='shred -n 65 -z -u -v -f'

> which cp
/bin/cp
> which -a cp
/bin/cp
> which shred
/usr/bin/shred

Dernière modification par FRUiT (Le 25/02/2011, à 23:57)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#3 Le 28/02/2011, à 11:54

XavierCo

Re : Which ne vois pas les alias

OK... alors on a le même problème!
Clairement si "which" ignore les alias, comment savoir quelle commande est réellement utilisée? Un peu dangereux non?

Autres idées?

Hors ligne

#4 Le 28/02/2011, à 12:08

kamui57

Re : Which ne vois pas les alias

J'ai trouvé ça mais... Ce n'est pas le which que j'ai ! Mon manuel est beaucoup plus court (LMDE)
http://www.xs4all.nl/~carlo17/which/
http://ss64.com/bash/which.html
http://linux.about.com/library/cmd/blcmdl1_which.htm

linux.about.com a écrit :

OPTIONS

--all, -a
    Print all matching executables in PATH, not just the first.
--read-alias, -i
    Read aliases from stdin, reporting matching ones on stdout. This is useful in combination with using an alias for which itself. For example
    alias which='alias | which -i'.

stephmint@satellitem30-laptop ~ $ alias | which -i
Illegal option -i
Usage: /usr/bin/which [-a] args
stephmint@satellitem30-laptop ~ $ 

Quand le dernier arbre aura été abattu, et le dernier animal exterminé, les hommes se rendront compte que l'argent ne se mange pas (proverbe indien)
Toshiba Satellite L655 4 Go RAM, Archlinux Gnome-shell,LXDE / W7
Toshiba Satellite M30 512 Mo RAM, Archlinux Gnome 3 restreint / Crunchbang LXDE
https://help.ubuntu.com/community/Pastebinit pour poster du texte sur internet en console

Hors ligne

#5 Le 28/02/2011, à 12:22

FRUiT

Re : Which ne vois pas les alias

Ben en même temps les alias ne marchent pas dans des scripts (à moins de les sourcer explicitement), alors moi ça m'ennuierait plutôt que which me trouve des alias à la place de mes commandes, ou qu'il me trouve plusieurs choix (auquel cas la forme VARPROG="$(which prog)" serait non avenue) mais bon chacun voit midi à sa porte smile


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#6 Le 28/02/2011, à 12:36

XavierCo

Re : Which ne vois pas les alias

Apres vérification sur une autre machine ubuntu, il se trouve en effet que which ne vois pas les alias. En ajoutant le bon PATH dans ~/.bashrc ça marche.
Donc il y a tout de meme une hierarchie dans ce que cherche which.

Sans PATH:

xavier@?:~$ which mpirun
/opt/intel/composerxe-2011.2.137/mpirt/bin/intel64/mpirun

Si  je definy un autre PATH:

 export PATH=/opt/openmpi-1.4.3/bin:$PATH
xavier@?:~$ which mpirun
/opt/openmpi-1.4.3/bin/mpirun

Centos done par contre les alias...... toujours pas très clair tous ça, mais en attendant "make" trouve mon compilo maintenant!
Merci !

Hors ligne