Linuxの起動bashの問題:コマンド代替の問題

Linuxの起動bashの問題:コマンド代替の問題

私の環境で新しいシェルを起動しようとしていますが、bash次のコマンドに問題があります。

$ 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 "'

だから私は逃げることができない

$ ")^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 "'

そしてシェルは後ろに残さなければなりません。これはサブシェルが開くという意味のようです。

それが開くシェルは、私が入力するすべてのコマンドに対して上記の4つの誤った行を繰り返すという点で奇妙な動作をします。

私はそれを見たが、~/.bashrcそれがした唯一のことはumask 0022

-x私の問題について多くの情報を提供していません

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

これはコメント行の内容に関連付けることができますか'/ect/bashrc

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
   }

ここでどこを見るべきですか?/etc/bashrcどのように修正/修正を要求する必要がありますか?

編集する

誰かが提案したように、これが私から来るものかもしれませんか~/.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    

助けてくれてありがとう。

ベストアンサー1

.profileビルドプロンプトを修正するために私が変更しなければならなかった行(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$ ")'

~になる

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

echo今、私は行をスキップするのを避ける方法を見つけたいと思います(bashprintecho基本的にそれを処理しないので置き換える必要がありますprint)。

おすすめ記事