Script shell - erro de sintaxe próximo ao token inesperado '['

0

Quando abro meu terminal, recebo o seguinte erro:

bash: /home/ai/.bashrc: line 75: syntax error near unexpected token '['
bash: /home/ai/.bashrc: line 75: 'if [ -x /usr/bin/dircolors ]; then'

A parte relevante do script do arquivo bashrc que começa com o comentário é a seguinte:

# enable color support of ls and also add handy aliases

if [ -x /usr/bin/dircolors ]; then

    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'

fi

O que estou fazendo errado e como corrigir isso?

    
por user2561310 23.09.2013 / 14:26

2 respostas

3

Olhando para o seu link de pasta de papel, você está perdendo um esac para finalizar a declaração case logo antes do bloco problemático.

    
por 23.09.2013 / 15:58
0

O erro provavelmente está ocorrendo antes desse bloco de código. Por exemplo, se eu colocar esse bloco de código em seu próprio script e echo os aliases estiverem fora:

#!/bin/bash

# example.bash
if [ -x /usr/bin/dircolors ]; then

    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    echo "alias ls='ls --color=auto'"
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    echo "alias grep='grep --color=auto'"
    echo "alias fgrep='fgrep --color=auto'"
    echo "alias egrep='egrep --color=auto'"

fi

Eu entendo isso:

$ ./example.bash 
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'

O que indica que está tudo bem.

Bloqueio do caso de terminação

Este bloco não tem um esac correspondente.

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)

....
    
por 23.09.2013 / 15:20

Tags