web-dev-qa-db-fra.com

Quelle est la commande * nix pour afficher le shell de connexion par défaut d'un utilisateur

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
43
k107

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
58
Todd A. Jacobs

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

Le shell de connexion est défini dans /etc/passwd. Alors tu peux faire:

grep username /etc/passwd
6
timos

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
3
Lucas

La variable Shell est utilisée pour représenter le shell actuel de l'utilisateur.

echo $Shell
0
nilsocket