bashrc if:表达式语法错误

时间:2013-01-21 13:50:13

标签: bash unix

我写了以下.bashrc:

# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions


function up( )
{
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
    P=$P/..
done
cd $P
export MPWD=$P
}

function back( )
{
LIMIT=$1
P=$MPWD
for ((i=1; i <= LIMIT; i++))
do
    P=${P%/..}
done
cd $P
export MPWD=$P
}

但是,保存后,当我source .bashrc时,我收到以下错误:if: Expression Syntax.

我做错了什么?我用谷歌搜索了一段时间但没有用。

1 个答案:

答案 0 :(得分:8)

if: Expression Syntax 

不是bash会给你的错误。也许你的shell不是bash。事实上,只要if独立,任何错误都不会出现在if本身:

$ if [somethingswrong]; then fail; fi # error, then `[` command must have space around it.
-bash: [somethingswrong]: command not found

您可以通过回复$SHELL来检查您的shell,然后您可以使用$BASH_VERSION检查哪个版本的bash。 (如果后者未设置,则shell不是bash。)