2012/3/20 Tom Gundersen <t...@jklm.no>:
> 2012/3/20 郑文辉(Techlive Zheng) <techlivezh...@gmail.com>:
>> But 'ls -l /bin/sh', shows that sh is a symlink to bash, but why it
>> behaves so differently?
>>
>>    lrwxrwxrwx 1 root root 4 2011-11-23 14:08 /bin/sh -> bash
>
> When called as "/bin/sh", bash works in compatibility mode.
> Initscripts only support bash being called as "bash".
>
> To find out more, Google is your friend :-)
>
> -t

Thank you, I thought it is related with this issue, so just ask here,
next time, I will do my research first.

I think I found the cause of my problem, it turns out I am using an
very old /etc/profile. I move the /etc/profile to /etc/profile.bak and
reinstall the filesystem package, then I diff the /etc/profile and
/etc/profile.bak. I found my previous version of /etc/profile using
the some sort of guess mechanism to find the shell that is using and
'sh' is the default value of $SHELL which may cause the last line of
'source /etc/bash-completion' running in compatibility mode.

Here is the diff output.

        diff /etc/profile.bak /etc/profile

        2,25d1
        < #
        < # This file is intended to be used for ALL common
        < # Bourne-compatible shells. Shell specifics should be
        < # handled in /etc/profile.$SHELL where $SHELL is the name
        < # of the binary being run (discounting symlinks)
        < #
        < # Sections taken from SuSe's /etc/profile
        < # Note the explicit use of 'test' to cover all bases
        < #  and potentially incompatible shells
        <
        < #Determine our shell without using $SHELL, which may lie
        < shell="sh"
        < if test -f /proc/mounts; then
        <    case $(/bin/ls -l /proc/$$/exe) in
        <         *bash) shell=bash ;;
        <         *dash) shell=dash ;;
        <         *ash)  shell=ash ;;
        <         *ksh)  shell=ksh ;;
        <         *zsh)  shell=zsh ;;
        <     esac
        < fi
        <
        < # Load shell specific profile settings
        < test -f "/etc/profile.$shell" &&  . "/etc/profile.$shell"
        31c7
        < PATH="/bin:/usr/bin:/sbin:/usr/sbin"
        ---
        > PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
        34,46d9
        < # Export default pkg-config path
        < PKG_CONFIG_PATH="/usr/lib/pkgconfig"
        < export PKG_CONFIG_PATH
        <
        < # Some readline stuff that is fairly common
        < HISTSIZE=1000
        < HISTCONTROL="erasedups"
        <
        < INPUTRC="/etc/inputrc"
        < LESS="-R"
        <
        < export HISTSIZE HISTCONTROL INPUTRC LESS
        <
        50c13
        <               test -x $profile && . $profile
        ---
        >               test -r "$profile" && . "$profile"
        65,66d27
        <
        < source /etc/bash_completion

Reply via email to