首页 > 代码库 > bash配置文件中alias错误会引起shell异常

bash配置文件中alias错误会引起shell异常

1. 先介绍下alias(别名)的用法

    alias la=‘ls -a‘  alias b=‘cd ..‘ 等等

    alias 是个好东西,可以在用shell时省很多时间


2. 但有一天我发现执行shell脚本的时候,if 语句不能用了,会报以下错误:

    bash: build/envsetup.sh: line 30: syntax error near unexpected token `then‘
    bash: build/envsetup.sh: line 30: `    if [ ! "$T" ]; then‘

    这是我在编译安卓4.2.2系统时运行 source setenv 时,发生的,很是郁闷!

    (而且还有其他异常,输入一些命令按Tab键没有提示了,如:apt-get install xxx)


3. 于是各种找,终于发现了是 .bashrc文件的alias中出现了shell脚本的关键字if:alias if=‘ifconfig‘

    

4. 总结

   应该是shell解释脚本时,把“if” 都替换成了“ifconfig”,肯定报错,所以在写配置文件的时候,

    一定要注意不要使用关键字和出现语法错误。


5. 后果

    之前因为这个错误重装了linux mint, 结果还是出现了这个错误,学艺不精啊。

    我可能一辈子都找不到这个错误,而有些人可能一辈子都不会出现这个错误。

    我是不幸的,也是幸运的!


6. 最后

    附我常用的alias

alias ls='ls --color=tty'
alias l.='ls -d .* --color=tty'
alias la='ls -a'
alias ll='ls -l'
alias llh='ls -l -h'
alias l='ls'
alias c='cd'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias b='cd ..'
alias py='python'
alias md='mkdir'
alias mk='make'
alias mkcl='make clean'
alias m='man'
alias t='top'
alias cl='clear'
alias sudo='sudo '
# alias if='ifconfig' # I hate u!
alias ip='ifconfig'
alias mo='mount'
alias um='umount'
alias gcc='gcc -Wall'
alias grep='grep --colour=auto'