分页: 1 / 2

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

发表于 : 2007-05-14 22:39
cyberx
用env命令看到:
SHELL=/bin/bash

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

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

系统是 xubuntu 7.04

发表于 : 2007-05-14 22:42
eexpress
用户属性里面看看

发表于 : 2007-05-14 22:42
BigSnake.NET
有什么问题..两者根本完全无关

发表于 : 2007-05-14 22:45
xport
查看目前使用那个 shell :

代码: 全选

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

代码: 全选

shell> fgrep `whoami` /etc/passwd | awk -F":" '{printf $7}'

发表于 : 2007-05-14 22:45
iblicf
BigSnake.NET 写了:有什么问题..两者根本完全无关

发表于 : 2007-05-14 22:52
ziyun
我曾听用其他系统的人说/bin/sh是/bin/bash的一个链接,但在ubuntu上不是

发表于 : 2007-05-14 22:57
xport
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

发表于 : 2007-05-15 11:01
oldniu
好像是6.10开始/bin/sh指向了/bin/dash。功能上更安全也更局限。所以有些shell script 一定要特别指明用/bin/bash yourshellscript
才能正确执行。

发表于 : 2007-05-15 18:36
cyberx
BigSnake.NET 写了:有什么问题..两者根本完全无关
那为什么会有个$SHELL呢?是干啥呢?用的是dash,但是$SHELL说是bash会不会出问题?

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

sh指向dash与此无关

发表于 : 2007-05-15 18:41
BigSnake.NET
oldniu 写了:好像是6.10开始/bin/sh指向了/bin/dash。功能上更安全也更局限。所以有些shell script 一定要特别指明用/bin/bash yourshellscript
才能正确执行。
安装bash..卸掉dash就可以了,注意同时调整你的shell

发表于 : 2007-05-15 19:51
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

发表于 : 2007-05-15 19:53
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没有这些功能,所以就不行了

发表于 : 2007-05-15 19:57
xport
写shell的人没有注意兼容性,现在不是都在向POSIX看齐了么?

发表于 : 2007-05-15 20:14
cyberx
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里不是一个东西了,那么这个变量到底是干啥用的乜?与实际不符会不会出问题?