Quelle est la commande * nix pour afficher le shell de connexion par défaut d'un utilisateur?
Je peux modifier le shell de connexion par défaut avec chsh
, mais je ne sais pas comment obtenir le shell par défaut de l'utilisateur.
Pseudocode
$ get-Shell
/usr/bin/zsh
La manière canonique d'interroger le fichier/etc/passwd pour cette information est avec getent
. Vous pouvez analyser la sortie de getent
avec des outils standard tels que cut
pour extraire le shell de connexion de l'utilisateur. Par exemple:
$ getent passwd $LOGNAME | cut -d: -f7
/bin/bash
La commande est finger
.
[ken@hero ~]$ finger ken
Login: ken Name: Kenneth Berland
Directory: /home/ken Shell: /bin/tcsh
On since Fri Jun 15 16:11 (PDT) on pts/0 from 70.35.47.130
1 hour 59 minutes idle
On since Fri Jun 15 18:17 (PDT) on pts/2 from 70.35.47.130
New mail received Fri Jun 15 18:16 2012 (PDT)
Unread since Fri Jun 15 17:05 2012 (PDT)
No Plan.
Le shell de connexion est défini dans /etc/passwd
. Alors tu peux faire:
grep username /etc/passwd
Je pense que ce que vous recherchez est ceci:
#!/bin/bash
cat /etc/passwd | grep $1 | cut -d ':' -f 7
EDIT: @jrrs a recommandé cette version comme une amélioration ... je suis d'accord ...
#!/bin/bash
grep "^$1" /etc/passwd | cut -d ':' -f 7
Enregistrez cela en tant que get-Shell
quelque part dans votre chemin (probablement ~/bin) puis appelez-le comme suit:
get-Shell userfoo
La variable Shell
est utilisée pour représenter le shell actuel de l'utilisateur.
echo $Shell