LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1038|回复: 3

新手求帮助:一个shell的错误

[复制链接]
发表于 2007-11-20 13:20:06 | 显示全部楼层 |阅读模式
请教
大家一起看看
我在后面放
export JAVA_HOME=/usr/local/jdk1_6
export JAVA_BIN=/usr/local/jdk1_6/bin
export PATH=$PATHJAVA_HOME/bin
export CLASSPATH=.JAVAHOME/lib/dt.jarJAVA_HOME/lib/tools.jar

出现错误
-bash: /etc/bashrc: line 46: syntax error near unexpected token `fi'
-bash: /etc/bashrc: line 46: `fi'

先谢过


# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# by default, we want this to get set.
# Even for non-interactive, non-login shells.
if [ "`id -gn`" = "`id -un`" -a `id -u` -gt 99 ]; then
        umask 002
else
        umask 022
fi

# are we an interactive shell?
if [ "$PS1" ]; then
    case $TERM in
        xterm*)
                if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
                else
                    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}{PWD/#$HOME/~}\007"'
                fi
                ;;
        screen)
                if [ -e /etc/sysconfig/bash-prompt-screen ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
                else
                PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}{PWD/#$HOME/~}\033\\"'
                fi
                ;;
        *)
                [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
            ;;
    esac
    # Turn on checkwinsize
    shopt -s checkwinsize
    [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
fi

if ! shopt -q login_shell ; then # We're not a login shell
        for i in /etc/profile.d/*.sh; do
            if [ -r "$i" ]; then
                . $i
            fi
        unset i
fi
# vim:ts=4:sw=4


export JAVA_HOME=/usr/local/jdk1_6
export JAVA_BIN=/usr/local/jdk1_6/bin
export PATH=$PATHJAVA_HOME/bin
export CLASSPATH=.JAVAHOME/lib/dt.jarJAVA_HOME/lib/tools.jar
发表于 2007-11-20 14:06:19 | 显示全部楼层
for循环的do没有匹配到done.
  1. # /etc/bashrc
  2. # System wide functions and aliases
  3. # Environment stuff goes in /etc/profile
  4. # by default, we want this to get set.
  5. # Even for non-interactive, non-login shells.
  6. if [ "`id -gn`" = "`id -un`" -a `id -u` -gt 99 ]; then
  7.     umask 002
  8. else
  9.     umask 022
  10. fi
  11. # are we an interactive shell?
  12. if [ "$PS1" ]; then
  13.     case "$TERM" in
  14.         xterm*)
  15.         if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
  16.             PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
  17.         else
  18.             PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
  19.         fi
  20.         ;;
  21.         screen)
  22.         if [ -e /etc/sysconfig/bash-prompt-screen ]; then
  23.             PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
  24.         else
  25.             PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\033\"'
  26.         fi
  27.         ;;
  28.         *)
  29.         [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
  30.         ;;
  31.     esac
  32.     # Turn on checkwinsize
  33.     shopt -s checkwinsize
  34.     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
  35. fi
  36. if ! shopt -q login_shell ; then # We're not a login shell
  37.     for i in /etc/profile.d/*.sh; do
  38.         if [ -r "$i" ]; then
  39.             . $i
  40.         fi
  41.     done
  42.         unset i
  43. fi
  44.     # vim:ts=4:sw=4
  45.     export JAVA_HOME=/usr/local/jdk1_6
  46.     export JAVA_BIN=/usr/local/jdk1_6/bin
  47.     export PATH=$PATH:$JAVA_HOME/bin
  48.     export CLASSPATH=.:$JAVAHOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
复制代码

给case后面的$TERM加上双引号试试
  1. case "$TERM" in
复制代码
你看看行不?好像在case里不会出现单词分隔的。abs里case的语法是这样的:
  1. case "$variable" in
  2. "$condition1" )
  3. command...
  4. ;;
  5. "$condition2" )
  6. command...
  7. ;;
  8. esac
复制代码
而且还提到:

  • 对变量使用""并不是强制的, 因为不会发生单词分割.
  • 每句测试行, 都以右小括号)来结尾.
  • 每个条件判断语句块都以一对分号结尾 ;;.
  • case块以esac (case的反向拼写)结尾.


不一定,如果是终端你注销了重登录下。如果是桌面,你source一下.bash_profile(不一定就是这个文件,你看看它们的调用顺序吧)。
第二个问题的话,我给你个网页你慢慢瞅瞅吧
http://blog.chinaunix.net/u/30557/showart_291149.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-20 14:26:46 | 显示全部楼层
感激!!
还有一点
代码引用后
: command not found
: command not found
'ash: /etc/bashrc: line 16: syntax error near unexpected token `in
'ash: /etc/bashrc: line 16: `    case $TERM in
谢谢

-------------------------------------------------------

问题一样
请教
/etc/bashrc修改了以后要重启系统才生效?
谢谢

还有
终端窗口
[user@user user]  提示符
置换成
bash-3.00# 提示符

不慎感激
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-20 17:42:47 | 显示全部楼层
问题一样
请教
/etc/bashrc修改了以后要重启系统才生效?
谢谢

还有
终端窗口
[user@user user] 提示符
置换成
bash-3.00# 提示符

不慎感激
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表