linux 用户shell(linux运行shell脚本)

大家好,关于linux 用户shell很多朋友都还不太明白,今天小编就来为大家分享关于linux运行shell脚本的知识,希望对各位有所帮助!

linux怎么查用户shell

一、最常用的查看shell的命令,但不能实时反映当前shell

[root@localhost~]$ echo$SHELL

/bin/bash

二、下面这个用法并不是所有shell都支持

[root@localhost~]$ echo$0

-bash

三、环境变量中shell的匹配查找

[root@localhost~]$ env| grep SHELL

SHELL=/bin/bash

四、口令文件中shell的匹配查找

[root@localhost~]$ cat/etc/passwd| grep root

root:x:0:0:root:/root:/bin/bash

五、查看当前进程

[root@localhost~]$ ps

PID TTY TIME CMD

3052 pts/0 00:00:00 bash

3254 pts/0 00:00:00 ps

六、先查看当前shell的pid,再定位到此shell进程

[root@localhost~]$ echo$$

1862

[root@localhost~]$ ps-ef| grep 1862

root 1862 1860 0 01:50 pts/0 00:00:00-bash

root 2029 1862 0 02:07 pts/0 00:00:00 ps-ef

root 2030 1862 0 02:07 pts/0 00:00:00 grep 1862

七、输入一条不存的命令,查看出错的shell提示

[root@localhost~]$ asdf

bash: asdf: command not found

附:一条命令即可实现:

[root@localhost~]$ ps-ef| grep `echo$$`| grep-v grep| grep-v ps

root 1862 1860 0 01:50 pts/0 00:00:00-bash

什么是Linux的登录shell与非登录shell

Linux的登录shell与非登录shell的含义及区别:

1、含义:登录shell,指的是当用户登录系统时所取的那个shell,登录shell属于交互式shell。

登录shell将查找4个不同的启动文件来处理其中的命令,用户登录后,在终端上输入命令,shell立即执行用户提交的命令,当用户退出后,shell也终止了。

非交互式:即shell与用户不存在交互,而是以shellscript的方式执行的,shell读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。

2、完整度不同:如果启动了一个bash shell而没有登入系统(如在CLI提示符中键入bash),则启动了一个交互式非登录shell。

交互式非登录shell执行/bashrc文件中的命令,在每次执行shell脚本时,都会重新读取这个文件,所以是最完整的。

3、使用情况不同:登录shell的初始化文件(比如.bash_profile)通常会运行这个文件。这样,登录shell和非登录shell都可以使用.bashrc中的命令。

4、登陆方式不同:登录 shell需要用户名、密码登录后进入的 shell,或者通过--login选项生成的 shell。

非登录 shell是指不需要输入用户名和密码即可打开的 shell,比如输入命令bash或者sh就能进入一个全新的非登录 shell,在 Gnome或 KDE中打开一个“terminal”窗口,也是一个非登录 shell。

5、数值不同:

查看$0的值,登录shell返回-bash,而非登录shell返回的是bash。

需要注意的是:执行exit命令,退出的shell可以是登录或者非登录shell;执行logout命令,则只能退出登录shell,不能退出非登录shell。

扩展资料:

登陆shell通常指的是:

1、用户通过输入用户名/密码(或证书认证)后启动的shell;

2、通过带有-l|--login参数的bash命令启动的shell。

例如,系统启动、远程登录、使用su-切换用户、通过bash--login命令启动bash等。

而其他情况启动的shell基本上就都是“非登陆shell”了。

例如,从图形界面启动终端、使用su切换用户、通过bash命令启动bash等。

参考资料:百度百科-shell

什么是默认登录shell

就是说这个shell是可以用于用户登录使用的,比如

/bin/bash,/bin/sh,/bin/csh……

一般Linux默认的用户shell都是bash,也就是说你可以登录进去敲命令。

非登陆shell,经典的/bin/nologin就是一个非登陆shell,也就是说如果一个用户默认的shell是它的话,这个用户即使登录进Linux也不无法使用Linux。

=================

shell是用户和计算机交流的中介,“登录shell”保证用户和计算机交流,“非登陆shell”无法让用户与计算机交流。

==================

关于用户的默认登录shell是在/etc/passwd文件中记录的。

“非登陆”shell有它特定的用途,比如一个用Linux搭建一个ftp服务器,并且创建了很多的ftp用户,那么就可以将这些用户的默认shell改为nologin,这样一来,这些虽然是Linux上的用户可是却无法登录进Linux主机,只能登录ftp服务器了。保证了安全性。

阅读剩余
THE END