Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 查看用户的*nix命令是什么';默认登录shell_Linux_Shell_Unix - Fatal编程技术网

Linux 查看用户的*nix命令是什么';默认登录shell

Linux 查看用户的*nix命令是什么';默认登录shell,linux,shell,unix,Linux,Shell,Unix,查看用户默认登录shell的*nix命令是什么 我可以使用chsh更改默认登录shell,但我不知道如何获取用户的默认shell 伪码 $ get-shell /usr/bin/zsh 登录shell在/etc/passwd中定义。因此,您可以: grep username /etc/passwd 我想你要找的是: #!/bin/bash grep "^$1" /etc/passwd | cut -d ':' -f 7 将它另存为路径中的某个地方(可能是~/bin),然后像这样调用它: g

查看用户默认登录shell的*nix命令是什么

我可以使用
chsh
更改默认登录shell,但我不知道如何获取用户的默认shell

伪码

$ get-shell
/usr/bin/zsh

登录shell在
/etc/passwd
中定义。因此,您可以:

grep username /etc/passwd

我想你要找的是:

#!/bin/bash
grep "^$1" /etc/passwd | cut -d ':' -f 7
将它另存为路径中的某个地方(可能是~/bin),然后像这样调用它:

get-shell userfoo

在/etc/passwd文件中查询此信息的标准方法是使用
getent
。您可以使用标准工具(如
cut
)解析
getent
输出,以提取用户的登录shell。例如:

$ getent passwd $LOGNAME | cut -d: -f7
/bin/bash

命令是
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.

SHELL
变量用于表示用户的当前SHELL

echo $SHELL

这里不一定有定义。getent是正确的方法。getent将获得输出ala/etc/passwd。下面的finger命令使那些不用于构建passwd文件的人可读。不过getent是更合适的工具。提问者明确表示,他们想要一种只查看shell的方法,因为grepping/etc/passwd仍然会显示shell和其他数据,但是getent是从这些文件所在的数据库格式查询数据的最基本方法;它可能存在于LDAP数据库中。不幸的是,虽然我模糊地意识到PAM确实是负责查找这些信息的系统,但我不知道如何查找,所以我希望找到另一个答案。除了真正的多用户机器,这在OS X上不起作用。@Glyph my setup使用LDAP/PAM,这些条目在
getent passwd
中正确显示-似乎它先转储/etc/passwd,然后一个接一个地转储其他源。CentOS 6没有此命令,但您可以使用
yum install finger
轻松安装。默认登录shell用户请求的内容不一定与当前shell相同。实际上,shell变量不包含当前shell。它实际上包含用户首选shell的设置(通常与默认登录shell相同)。因此,这实际上是对原始问题的一个很好的回答,也是最简单、最可移植的问题之一(例如,getent在MacOS上不起作用,但$SHELL起作用)。@Foodod很好,除了一个非常不寻常的情况,即用户更改自己的SHELL变量的值。然后,他们将得到他们设置为持续的任何东西,而不是他们的登录shell。但是,是的,这是非常罕见的,不必担心(除非你不得不担心)。而且,如果他们费心去改变它,也许他们真的想要那个值,而不是登录shell。