"source /etc/profile"을 /etc/bash.bashrc에 넣었는데 우분투 16.04에서 터미널 창을 열 수 없습니다. 이제 터미널 창을 열려고 할 때마다 몇 초 후에 닫힙니다. 그 몇 초 동안 프롬프트도 명령도 없었습니다.
내 /etc/bash.bashrc는 다음과 같습니다
# System-wide .bashrc file for interactive bash(1) shells.
# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
source /etc/profile
alias login="sudo login"
# set a fancy prompt (non-color, overwrite the one in /etc/profile)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
# Commented out, don't overwrite xterm -T "title" -n "icontitle" by default.
# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
# PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
# ;;
#*)
# ;;
#esac
# enable bash completion in interactive shells
#if ! shopt -oq posix; then
# if [ -f /usr/share/bash-completion/bash_completion ]; then
# . /usr/share/bash-completion/bash_completion
# elif [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
# fi
#fi
# sudo hint
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then
case " $(groups) " in *\ admin\ *|*\ sudo\ *)
if [ -x /usr/bin/sudo ]; then
cat <<-EOF
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
EOF
fi
esac
fi
# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then
function command_not_found_handle {
# check because c-n-f could've been removed in the meantime
if [ -x /usr/lib/command-not-found ]; then
/usr/lib/command-not-found -- "$1"
return $?
elif [ -x /usr/share/command-not-found/command-not-found ]; then
/usr/share/command-not-found/command-not-found -- "$1"
return $?
else
printf "%s: command not found\n" "$1" >&2
return 127
fi
}
fi
이것은 내 /etc/profile입니다
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
export NODE_REPL_HISTORY=""
unset HISTFILE
set +o history
alias login="sudo login"
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
터미널이 닫힌 이유는 한 사람이 다른 사람을 호출하고 다른 사람이 다른 사람을 호출하는 실수로 만든 무한 루프 때문이라고 99% 확신합니다.
어떡해?
답변1
문제는 실제로 무한 루프입니다. 쉘은 읽고 /etc/profile
, 읽어야 할 것을 찾아 /etc/bash.bashrc
이를 수행하고, 읽어야 할 것을 찾아 /etc/profile
이를 수행하는 등의 작업을 수행합니다. 결국 쉘은 너무 깊게 재발한다고 결정하고 포기합니다.
쉘이 시작 파일을 처리하는 동안 +를 누르십시오 Ctrl. C메시지가 표시됩니다.
그런 다음 포함 /etc/bash.bashrc
및 /etc/profile
포함 /etc/profile
을 삭제합니다 /etc/bash.bashrc
. 이러한 파일은 다양한 용도로 사용됩니다.
/etc/profile
로그인 시 환경 변수 설정 등의 작업을 읽고 수행합니다. 일반적으로 bash 이외의 쉘에 의해 실행됩니다./etc/bash.bashrc
대화형 세션에만 사용되는 bash 구성 파일입니다. 별칭 및 힌트와 같은 항목이 포함되어야 합니다. Bash는 터미널에서 bash를 실행할 때 이를 로드합니다.
답변2
원하는 배포판을 사용하여 라이브 USB를 만드는 것이 좋습니다. liveusb에서 컴퓨터를 열고 /
파티션을 마운트하세요.
mount /dev/sdX /mnt
/mnt
liveISO에 있을 것입니다.
그런 다음 nano, vim 또는 기타 텍스트 편집기를 사용하여 구성을 편집하고 다음 줄 중 하나를 삭제하세요.
그런 다음 umount
디스크를 사용하고 컴퓨터를 다시 시작하면 작동합니다.