[arch-general] Start a daemon, show a syntax error

郑文辉(Techlive Zheng) techlivezheng at gmail.com
Tue Mar 20 06:47:13 EDT 2012


2012/3/20 Tom Gundersen <teg at jklm.no>:
> 2012/3/20 郑文辉(Techlive Zheng) <techlivezheng at 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


More information about the arch-general mailing list