Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
sysadmin:linux:shell [2021/11/09 21:08] – créée yoann | sysadmin:linux:shell [2023/01/19 09:26] (Version actuelle) – yoann | ||
---|---|---|---|
Ligne 23: | Ligne 23: | ||
===== Identifier le shell de login ===== | ===== Identifier le shell de login ===== | ||
- | La documentation | + | La documentation |
<code bash> | <code bash> | ||
Ligne 40: | Ligne 40: | ||
</ | </ | ||
+ | Depuis un shell interactif, on peut utiliser la primitive **exec** pour remplacer le processus courant par un interpréteur nommé " | ||
+ | |||
+ | <code bash> | ||
+ | # L' | ||
+ | # mais 'est pas un shell de login | ||
+ | echo $$ | ||
+ | 83679 | ||
+ | |||
+ | shopt login_shell | ||
+ | login_shell | ||
+ | |||
+ | # Ici on remplace l’exécution courante par un nouvel interpréteur bash nommé " | ||
+ | exec -a " | ||
+ | |||
+ | echo $0 | ||
+ | -bash | ||
+ | |||
+ | # Le PID est identique | ||
+ | echo $$ | ||
+ | 83679 | ||
+ | |||
+ | # mais l' | ||
+ | shopt login_shell | ||
+ | login_shell | ||
+ | </ | ||
+ | |||
+ | Le fait d' | ||
+ | |||
+ | |||
+ | Pour qu'un shell soit considéré comme shell de login, il suffit de positionner l' | ||
+ | |||
+ | <code bash> | ||
+ | # Affiche le PID du shell courant | ||
+ | echo PID=$$ | ||
+ | PID=5508 | ||
+ | |||
+ | # Détermine si le shell courant est un shell de login: | ||
+ | shopt login_shell | ||
+ | login_shell | ||
+ | |||
+ | # Invoque un nouveau shell avec l' | ||
+ | # et exécute les commandes passées à l' | ||
+ | /bin/bash -l -i -c 'echo $0; echo PID=$$; shopt login_shell; | ||
+ | /bin/bash | ||
+ | PID=37394 | ||
+ | login_shell | ||
+ | systemd(1)───systemd(4262)───gnome-terminal-(4965)───bash(4973)───screen(5506)───screen(5507)───bash(5508)───bash(37394)───pstree(37401) | ||
+ | </ |