5

我写了以下 .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.

我究竟做错了什么 ?我用谷歌搜索了一段时间,但无济于事。

4

1 回答 1

10
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

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

于 2013-01-21T13:52:19.063 回答