Confundi com meu / etc / profile e agora aparece um erro toda vez que eu logar

0

Eu sou relativamente novo no Ubuntu, e fiz um pouco mais de bagunça do que deveria. Eu estava lendo um guia sobre o download do Oracle 8 JDK e ele disse para alterar as últimas linhas do arquivo / etc / profile. Ele apareceu com um erro depois que eu fiz isso e agora não consigo descobrir como alterá-lo de volta.

bash: /etc/profile: line 25: syntax error near unexpected token fi' bash: /etc/profile: line 25:fi'

Esse é o erro que aparece. É assim que o arquivo / etc / profile se parece:

# /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

Eu não sei ler isto ou como consertar e eu fui estúpido por tentar editá-lo em primeiro lugar, sem saber o que estou fazendo, mas qualquer conselho sobre como consertá-lo seria apreciado . Obrigada!

    
por mrmojorisin2794 31.05.2016 / 07:56

3 respostas

4

A construção condicional for termina em done , o que está faltando no seu caso.

Verifique a marca ^^^^ abaixo:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done  
  ^^^^  
fi
    
por heemayl 31.05.2016 / 08:02
5

A parte aqui:

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

tem que ser assim:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
fi
    
por Videonauth 31.05.2016 / 07:58
0

Eu tive um problema semelhante no meu sistema alguns dias atrás depois que instalei o JVE1.8 e o JDK1.8. Certifique-se de que os símbolos # na frente de /etc/profile (linha 1) e and Bourne (linha 2) estejam presentes, assim como a done entre os comandos fi no final estão presentes.

Se depois disso, ainda der erro, tente adicionar unset i acima do comando done .

Se ainda ocorrer um erro, tente adicionar unset i acima do comando 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
    
por Beulah 09.06.2017 / 19:59