#1 Le 18/09/2013, à 02:21
- cromanion
[RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
bonjour,
Je voudrais retrouver la ligne de commande complète qui a lancé un script. i.e.:
bash toto titi
où je voudrais retrouver l'élément
bash
et non le reste. Ce reste je peux le voir dans $@.
Cela me permettrais de savoir si l'utilisateur a tapé 'bash' ou 'dash' ou 'ksh' ou 'sh'.
Je ne peux utiliser la primitive 'hierarchy' qu'en ligne de commande. Dans un script, elle ne retourne rien. Par contre elle offre une API en langage C.
J'ai pas glanné grand chose sur la toile.
Dernière modification par cromanion (Le 18/09/2013, à 04:02)
Hors ligne
#2 Le 18/09/2013, à 03:04
- Watael
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
salut,
cat /proc/[pid]/comm
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 18/09/2013, à 03:20
- grim7reaper
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
shell=$(cat /proc/$$/cmdline | tr '\000' ' ' | cut -f 1 -d ' ')
Il y a peut-être plus simple.
Édit : la solution de Watael est plus simple
Dernière modification par grim7reaper (Le 18/09/2013, à 03:20)
Hors ligne
#4 Le 18/09/2013, à 04:00
- cromanion
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
salut,
cat /proc/[pid]/comm
merci ça marche!
Hors ligne
#5 Le 18/09/2013, à 04:09
- cromanion
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
shell=$(cat /proc/$$/cmdline | tr '\000' ' ' | cut -f 1 -d ' ')
Il y a peut-être plus simple.
Édit : la solution de Watael est plus simple
oui elle est plus simple.
J'ai ajouté l'option -A pour avoir les séparateurs, car cat sans option nous retrourne:
bashtototiti
avec l'option -A ça retourne:
bash^@toto^@titi^@
Hors ligne
#6 Le 18/09/2013, à 06:01
- nesthib
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
Et pourquoi pas simplement :
echo $0
echo $0 $@
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#7 Le 18/09/2013, à 06:40
- grim7reaper
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
Et pourquoi pas simplement :
echo $0
echo $0 $@
Parce que ça ne fait pas ce qui est demandé :
% zsh toto.sh
toto.sh
% sh toto.sh
toto.sh
% bash toto.sh
toto.sh
Ce qui est attendu c’est ça :
% zsh toto.sh
zsh
% sh toto.sh
sh
% bash toto.sh
bash
Dernière modification par grim7reaper (Le 18/09/2013, à 06:41)
Hors ligne
#8 Le 18/09/2013, à 07:03
- nesthib
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
Je m'étais basé sur le résultat de cmdline, et en l'occurrence en lançant :
./toto.sh
on obtient $0 (alors que la solution de Watael donne le shell du shebang)
Mmais il est vrai que c'est différent en appelant explicitement l'interpréteur
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#9 Le 18/09/2013, à 07:24
- tiramiseb
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
Salut,
Et pourquoi ne pas utiliser $_ ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#10 Le 18/09/2013, à 07:48
- grim7reaper
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
Et pourquoi ne pas utiliser $_ ?
Ça semble moyennement fiable :
% sh toto.sh
/bin/sh
% zsh toto.sh
WINEARCH=win32
% bash toto.sh
/bin/bash
Je sais pas trop ce que WINEARCH vient foutre là, mais il est là en tout cas…
Dernière modification par grim7reaper (Le 18/09/2013, à 07:49)
Hors ligne
#11 Le 18/09/2013, à 08:15
- tiramiseb
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
grim7reaper : quel est le contenu de ton "toto.sh" ?
Chez moi j'ai ça :
sebastien@amaretto:~$ cat toto.sh
echo $_
sebastien@amaretto:~$ zsh toto.sh
Il semble que le "$_" ne soit pas assez universel... Avec bash et dash ça marche bien en tout cas...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#12 Le 18/09/2013, à 09:10
- grim7reaper
Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.
grim7reaper : quel est le contenu de ton "toto.sh" ?
La même chose que toi :
echo $_
Hors ligne