#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
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
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