Bash는 더 이상 디렉토리를 변경하지 않습니다.

Bash는 더 이상 디렉토리를 변경하지 않습니다.

내 bash 쉘은 더 이상 디렉토리를 변경하기 위해 cd를 사용하지 않습니다. 나는 직장에서 이것을 일찍 발견했고 내가 연 모든 새 쉘(터미널 또는 xterm 등)이 홈 디렉토리에 갇혀 종료할 수 없다는 것을 발견했습니다(이미 열려 있는 터미널은 계속 정상적으로 작동했습니다).

[~]$ pwd
/home/sys/dave
[~]$ cd /
[~]$ cd Documents/
[~]$ pwd
/home/sys/dave
[~]$ type cd
cd is a shell builtin
[~]$ alias
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

내 생각에는 메모리 부족 처리기(별칭 없이 내장 버전을 사용하여 CD를 확인함)와 같이 처리할 시간이 없는 이상한 일임에 틀림없다고 생각합니다.

그래서 나는 (예, 알고 있습니다) 컴퓨터를 재부팅했습니다.

새로 부팅해도 똑같은 문제입니다.

반면에 CSH는 잘 작동하므로 위 스니펫 바로 다음에:

[~]$ csh
[~]$ cd /
[/]$ pwd
/
[/]$ cd ~/Documents/
[~/Documents]$ pwd
/home/sys/dave/Documents
[~/Documents]$ 

지난 며칠 동안 새로운 것을 설치하거나 업데이트를 수행하지 않았으며 오늘 밤 늦게까지 잘 작동했습니다.

아이디어/도움/도움을 주셔서 감사합니다!

** 갱신**

그래서 .bashrc에서 이 줄을 찾았습니다.

export PROMPT_COMMAND="cd"

PROMPT_COMMAND를 설정 해제하면 모든 것이 잘 작동합니다.

하지만...뭐야. 나는 이 줄을 .bashrc에 넣지 않았고 오늘 밤까지 모든 것이 잘 작동했습니다. 주석 처리를 해야 할까요, 수동으로 설정을 해제해야 할까요, 아니면 마녀처럼 컴퓨터를 불태워야 할까요?

답변1

PROMPT_COMMAND로 설정하는 것은 cd매우 흔한 장난이며, 설정하지 않고 귀하가 유일한 사용자라면 그렇습니다. 귀하는 이미 위험에 노출된 것입니다.

친구가 접속할 수 있으면 많이 본 장난인데, 얘기를 나눠보세요.

답변2

환경 변수가 설정된 경우 PROMPT_COMMAND각 기본 프롬프트가 실행되기 전에 이 값이 명령으로 실행됩니다. 즉, 이 변수의 내용은 Bash가 프롬프트를 표시하기 전에 일반 Bash 명령으로 실행됩니다.

[vivek@vivek-desktop man]$ PROMPT_COMMAND="echo Yahooo"
Yahooo
[vivek@vivek-desktop man]$ date
Tue Oct 20 23:50:01 IST 2009
Yahooo

원천

cd인수 없이 홈 디렉터리로 돌아갑니다(편리합니다!).

.bashrc각 쉘이 생성될 때 실행되므로 이전 터미널은 영향을 받지 않습니다.

관련 정보