免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5600 | 回复: 11
打印 上一主题 下一主题

请问如何查看当前使用的是何种SHELL? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-30 12:07 |只看该作者 |倒序浏览
一般系统默认的SHELL是什么啊?跟系统有关的么?我最常用的系统就IBM HP SOLARIS三种,都是浅尝辙止,没有太多时间去深入研究它,

论坛徽章:
0
2 [报告]
发表于 2005-12-30 13:00 |只看该作者
echo $0

论坛徽章:
0
3 [报告]
发表于 2005-12-30 13:01 |只看该作者
echo $SHELL

论坛徽章:
0
4 [报告]
发表于 2005-12-30 13:17 |只看该作者
[root@qiry root]# echo $0
-bash
[root@qiry root]# echo $SHELL
/bin/bash

论坛徽章:
0
5 [报告]
发表于 2005-12-30 13:17 |只看该作者
[root@qiry root]# echo $0
-bash
[root@qiry root]# echo $SHELL
/bin/bash

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-12-30 13:22 |只看该作者
原帖由 sunyone 于 2005-12-30 13:01 发表
echo $SHELL


這個好像要小心一下:

kenny@x40:~/tmp> ps
  PID TTY          TIME CMD
1534 pts/1    00:00:01 bash
16265 pts/1    00:00:00 ps
kenny@x40:~/tmp> echo $SHELL
/bin/bash
kenny@x40:~/tmp> cat 1.sh
#!/bin/csh
echo $$
pstree -p | grep -B 1 pstree
echo $SHELL
kenny@x40:~/tmp> ./1.sh
16279
        │               ├─konqueror(8413)
        │               ├─konsole(1530)───bash(1534)───1.sh(16279)───pstree(16286)
/bin/bash
kenny@x40:~/tmp> csh ./1.sh
16324
        │               ├─konsole(1530)───bash(1534)───csh(16324)─┬─grep(16332)
        │               │                                         └─pstree(16331)
/bin/bash


不管怎麼跑, 都說是 /bin/bash .

改為如下這個樣子或許好些:
kenny@x40:~/tmp> cat 1.sh
ps | awk '$1=='$$'{print $NF}'

kenny@x40:~/tmp> vi 1.sh
kenny@x40:~/tmp> csh ./1.sh
csh
kenny@x40:~/tmp> ./1.sh
bash
kenny@x40:~/tmp> sh ./1.sh
sh
kenny@x40:~/tmp> bash ./1.sh
bash

论坛徽章:
0
7 [报告]
发表于 2005-12-30 13:51 |只看该作者
原帖由 網中人 于 2005-12-30 13:22 发表


這個好像要小心一下:

kenny@x40:~/tmp> ps
  PID TTY          TIME CMD
1534 pts/1    00:00:01 bash
16265 pts/1    00:00:00 ps
kenny@x40:~/tmp> echo $SHELL
/bin/bash
kenny@x40:~/tmp ...

netman老师又在讲子进程,子shell,fork的概念了,不过我认为,一般要获取的都是当前运行命令的shell类型.

echo $SHELL  是我们在脚本中最常见的方法,我认为这样是可以的.如果要获取这个用户的登陆shell类型的话,直接检查passwd文件会更快点?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-12-30 15:57 |只看该作者
恩...
我沒講很多 parent / child process 的觀念在這裡.

我只是指出一點:
若你在 shell script 裡用 $SHELL 的話, 可能會不準.

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
9 [报告]
发表于 2005-12-30 16:00 |只看该作者
实际上只有在b{,a}sh中才是准的
如果我们已经知道了用的bash,还查看个屁啊?

论坛徽章:
0
10 [报告]
发表于 2005-12-30 20:42 |只看该作者
那是不是在命令行里echo $SHELL就可以了啊?还是如楼上说的那样,只有BASH有用?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP