私の環境で新しいシェルを起動しようとしていますが、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
今、私は行をスキップするのを避ける方法を見つけたいと思います(bashprint
はecho
基本的にそれを処理しないので置き換える必要がありますprint
)。