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服务器了。保证了安全性。