关于修改 sh -h 参数非法问题

大家好,请先看这个页面的头几帖:
bbs.eetop.cn/thread-325872-1-1.html

里面提到的问题我也遇到了。
他们在 ubuntu 上的解决办法是

sudo dpkg-reconfigure dash
出现询问是否使用 dash 界面时,选“NO”即可

假设我在 openSUSE 下遇到的问题也是这个原因,请问怎么做?
谢谢!

openSUSE 默认的 shell 是 bash。

怎么确认这一点?

sh --version


cat /etc/passwd | grep `whoami` | awk -F':' '{print $7}'

大叔,
cat /etc/passwd | grep whoami | awk -F’:’ '{print $7}'
查看的是用户的 shell 吧。貌似和 sh 不一样?其实最简单就是
la /bin/sh

la /usr/bin/sh
。。。。

出来是

lrwxrwxrwx 1 root root 4 11 月  7 2013 /bin/sh -> bash 

lrwxrwxrwx 1 root root 9 11 月  7 2013 /usr/bin/sh -> /bin/bash


cat /etc/passwd | grep whoami | awk -F’:’ '{print $7}'
的话出来的是:

/bin/zsh

难道我们说 openSUSE 默认的 shell 是什么? 不是在说 * 指定用户的默认 shell 吗?*
不同的用户,shell 可能是不同的,至少我在 ubuntu 上就遇到过, 默认安装的 ubuntu server 12.10, root 的 shell 是 bash, 普通用户的是 dash 。

sh --version

这个就可以知道 sh 链接到哪个具体的 shell 实现的呀,里面会打印是 bash 还 zsh 还是其它什么。你的方法可行,但是罗嗦。

额。我觉得其实是在说 /bin 和 /usr/bin 里面那个 sh 代表的是那个 shell,看他的样子估计是在某个程序脚本里需要运行 sh -h 这样的东西,如果这里 sh 指的不是 bash 的话就会出错。即使我的默认 shell 是 zsh,运行 sh 这个命令也还是会运行的 bash。

不同的用户 shell 当然可以不同啦。我的 shell 就是 zsh,su 切到 root 就变成 bash 了。但是这都不改变 /bin/sh 这个程序是指向 bash 的。。。当然这个也可以改,我估计是 ubuntu 里的 sh 是指向 dash 的吧。没有 ubnutu 无法验证。

但看他的解决方案是 dpkg-reconfigure(搜了一下是说「重新配制一个已经安装的软件包」)而不是 chsh,看来也不是用户默认 shell 的问题了。所以用
cat /etc/passwd | grep whoami | awk -F’:’ ‘{print $7}’
是不行的。。。。 sh --version 当然是很好的。。。。

echo $SHELL 就可以查看当前使用的是哪个 shell 了啊。