Я пытаюсь запустить новую оболочку в своей среде, но у команды 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
Любая помощь приветствуется, спасибо.
Мне пришлось изменить свой .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
для пропуска строки (у меня было заменить print
на echo
, потому что по умолчанию bash не обрабатывает print
).