내 환경에서 새 셸을 시작하려고 하는데 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 "'
그리고 쉘은 뒤에 남겨져야 합니다. 이는 서브쉘이 열린다는 의미인 것 같습니다.
그것이 여는 쉘은 내가 입력하는 모든 명령에 대해 위의 잘못된 네 줄을 반복한다는 점에서 이상한 동작을 합니다.
나는 그것을 보았지만 ~/.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
이제 나는 줄을 건너뛰는 것을 피하는 방법을 찾고 싶습니다 (bash print
는 echo
기본적으로 그것을 처리하지 않기 때문에 바꿔야 합니다 print
).