更多精彩内容请访问我的新博客站点
最近又翻阅了几本Linux相关的工具书,在这里记录一些关于Linux shell的新的小小的收获。
查看正在使用的shell
有很多方法可以查看当前正在使用的shell:
使用特殊参数
$0
$ echo $0 -bash
对于这里有点疑问的是有资料说在本地系统执行可能的结果会是
/bin/bash
,但是我尝试了一下发现结果还是bash
或者-bash
。不知道资料中说的本地系统指的是什么意思。输入不存在的命令:
$ asdf -bash: asdf: command not found
从shell提示中可以看出当前正在使用的shell是bash。
查看用户登录默认的shell
通过查看
/etc/passwd
文件找到用户对应的那一行,最后一列就是用户登录的shelluser1@ubuntu:~$ cat /etc/passwd | grep user1 user1:x:1000:1000:user1,,,:/home/user1:/bin/bash
最常用的方法:
$ echo $SHELL /bin/bash
从环境变量中查看:
$ env |grep SHELL SHELL=/bin/bash
切换用户正在使用的shell
直接输入对应shell的命令即可切换:
$ echo $0
-bash <==当前正在使用的shell
$ zsh <==运行zsh
$ echo $0
zsh <==当前正在使用的shell已经变成zsh
修改用户的登录shell
首先可以查看用户合法的shell:
$ chsh -l /bin/sh /bin/bash /sbin/nologin <==合法不可登录的shell /bin/tcsh /bin/csh /bin/mksh /bin/ksh /bin/zsh
chsh -l
命令并不总是可用,对于某些Linux发行版,chsh
命令没有-l
的选项,如ubuntu16.04
,但是可以直接查看/etc/shells
文件$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin <==合法不可登录的shell /bin/tcsh /bin/csh /bin/mksh /bin/ksh /bin/zsh
修改用户登录shell
$ chsh -s /bin/zsh Password: $ cat /etc/passwd | grep user1 user1:x:1000:1000:user1,,,:/home/user1:/bin/zsh <== /etc/passwd文件中已经发生变化 $ echo $SHELL /bin/bash <==但是再次查看$SHELL,发现并没有变,其实退出shell再次登录就会看到变化了