Linux começando o problema bash: problema de substituição de comando

0

Eu tento iniciar um novo shell no meu ambiente, mas o comando bash tem um problema:

$ bash
bash: command substitution: line 1: syntax error near unexpected token 'then'
'ash: command substitution: line 1: 'print -n "'logname'@'hostname':$(tput sgr0)";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "
bash: command substitution: line 1: syntax error near unexpected token 'then'
bash: command substitution: line 1: 'print -n "'logname'@'hostname':$(tput sgr0)";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "'

Então eu não consigo escapar com

$ ")^C
bash: command substitution: line 2: syntax error near unexpected token 'then'
'ash: command substitution: line 2: 'print -n "'logname'@'hostname':$(tput sgr0)";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "
bash: command substitution: line 1: syntax error near unexpected token 'then'
bash: command substitution: line 1: 'print -n "'logname'@'hostname':$(tput sgr0)";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "'

e deve deixar o shell com - acho que isso significa que ele realmente abriu um subshell.

O shell que ele abriu tem um comportamento estranho, porque para cada comando que eu digito, ele irá repetir as quatro linhas do erro acima.

Eu olhei em ~/.bashrc , mas a única coisa que faz é umask 0022 .

-x não me dá muito sobre o meu problema

$ bash -x
+ umask 0022
++ tput bold
bash: command substitution: line 1: syntax error near unexpected token 'then'
... same error

Isso pode estar vinculado ao ' que existe em /ect/bashrc na linha de comentário:

if ! shopt -q login_shell ; then # We're not a login shell
   # Need to redefine pathmunge, it get's undefined at the end of /etc/profile
   pathmunge () {
     case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
     esac
   }

Onde devo procurar daqui? Devo pedir que /etc/bashrc seja corrigido / modificado de alguma forma?

editar

Como sugerido por alguém, isso pode vir do meu ~/.profile ?

export PS1='$(tput bold)$(print -n "'logname'@'hostname':$(tput sgr0)";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")'
trap 1 2 3

PATH=$PATH:$HOME/bin

export PATH
export HTTPD_HOME=/pvar/product/httpd

        export EDITOR=/bin/vi
        export FCEDIT=/bin/vi
        export VISUAL=/bin/vi
        export HISTSIZE=5000
        export TMOUT=0    

Qualquer ajuda apreciada, obrigado.

    
por J. Chomel 10.05.2016 / 16:40

1 resposta

1

Eu tive que alterar meu .profile para corrigir a linha que cria o prompt ( PS1 ):

export PS1='$(tput bold)$(print -n "'logname'@'hostname':$(tput sgr0)";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")'

tornou-se

export PS1='$(tput bold)$(echo "'logname'@'hostname':$(tput sgr0)" ; \
  if [[ "${PWD#$HOME}" != "$PWD" ]]; \
  then echo "~${PWD#$HOME}"; \
  else echo "${PWD}"; fi; echo "$ ")'

Agora, gostaria de encontrar uma maneira de evitar que echo pule uma linha (tive de substituir print por echo porque o bash não manipula print por padrão).

    
por 10.05.2016 / 17:12