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

Watael a écrit :

salut,

cat /proc/[pid]/comm

merci ça marche! smile

Hors ligne

#5 Le 18/09/2013, à 04:09

cromanion

Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.

grim7reaper a écrit :
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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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.

nesthib a écrit :

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 smile


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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 $_ ?

Hors ligne

#10 Le 18/09/2013, à 07:48

grim7reaper

Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.

tiramiseb a écrit :

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

Hors ligne

#12 Le 18/09/2013, à 09:10

grim7reaper

Re : [RESOLU]bash script: voir la ligne de commande qui a lancé ce script.

tiramiseb a écrit :

grim7reaper : quel est le contenu de ton "toto.sh" ?

La même chose que toi :

echo $_

Hors ligne