Перепутался с моим / etc / profile и теперь при каждом входе в систему появляется ошибка

Я довольно новичок в Ubuntu и немного больше возился, чем следовало бы. Я читал руководство по загрузке Oracle 8 JDK, в котором говорилось об изменении последних нескольких строк файла / etc / profile. После того, как я это сделал, выскочила ошибка, и теперь я не могу понять, как вернуть ее обратно.

bash: / etc / profile: строка 25: синтаксическая ошибка рядом с неожиданным токеном fi' bash: /etc/profile: line 25: fi '

Это ошибка, которая появляется. Вот как выглядит файл / etc / profile:

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
fi

JAVA_HOME=/usr/lib/jvm/java-8-oracle
PATH=$PATH:$HOME/BIN:$JAVA_HOME/bin
export JAVA_HOME
export PATH

Я не знаю, как это прочитать или как это исправить, и я был глуп, пытаясь отредактировать его в первую очередь, без зная, что я делаю, но любой совет о том, как это исправить, будет принята с благодарностью. Спасибо!

0
задан 31 May 2016 в 18:56

3 ответа

for условное выражение создает концы в done, который отсутствует в Вашем случае.

Проверка эти ^^^^ метка ниже:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done  
  ^^^^  
fi
4
ответ дан 31 May 2016 в 18:56

Часть здесь:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
fi

должен быть похожим на это:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
fi
5
ответ дан 31 May 2016 в 18:56

У меня была подобная проблема в моей системе несколько дней назад после того, как я установил JVE1.8 и JDK1.8. Удостоверьтесь эти #, символы перед /etc/profile (строка 1) и and Bourne (строка 2) присутствуют, а также done промежуточные fi, команды в конце присутствуют.

, Если после этого, это все еще дает ошибку, попытка добавить unset i выше эти done команда.

, Если это все еще дает ошибку, попытайтесь добавить unset i выше эти done команда.

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
JAVA_HOME=/usr/lib/jvm/java-8-oracle
PATH=$PATH:$HOME/BIN:$JAVA_HOME/bin
export JAVA_HOME
export PATH
    fi
done
fi
0
ответ дан 31 May 2016 в 18:56

Другие вопросы по тегам:

Похожие вопросы: