BASH가“bash : cd : write error : Success”를 인쇄 한 이유는 무엇입니까?


12

나는 오늘 이것을 여러 번 알아 차렸다. cd ../Directory다른 디렉토리로 변경하기 위해 입력 하면 "bash : cd : write error : Success"가 표시됩니다. 다른 이전 명령과 관련이 있는지 확인할 수 없습니다.

  • typeset -f 아무것도 인쇄하지 않습니다.
  • alias 아무것도 인쇄하지 않습니다.
  • type -a cd "cd는 쉘 내장"입니다.
  • echo $CDPATH 빈 줄을 인쇄합니다.
  • $BASH_VERSION "bash : 4.2.37 (1) -release : command not found"를 인쇄합니다.
  • 나는 이것을 2-3 회만 알아 차렸다. 초기 디렉토리와 대상 디렉토리는 두 상황에서 동일했습니다. 이 방법으로 여러 번 디렉토리를 변경했지만 항상 오류가 발생하지 않았습니다.

이 문제의 원인은 무엇입니까?


type -a cdGlenn이 요청한대로 출력을 추가하십시오 .
terdon

type질문에 명령 의 출력을 추가하십시오 . 또한 이것은 모든 디렉토리에서 발생합니까, 아니면 특정 디렉토리에있는 경우에만 발생합니까? 그리고 출력은 echo $CDPATH무엇입니까?
terdon

어떤 정확한 bash 버전 ( $BASH_VERSION)을 실행 중입니까?
Gabe

나는있다 bash 4.2.37(1).
Village

답변:


6

아마도 버그?

이것은 잠재적 인 버그처럼 들립니다. 같은 메시지를 보여주는 비슷한 보고서를 찾았습니다. 버그 bash : pwd builtin이 쓰기 오류 : Success로 종료됩니다 .

발췌

ferror (stdout)가 0이 아닌 값을 반환하면이 메시지가 표시됩니다. 어떤 이유로 (아마도 검사 바로 앞의 fflush () 호출) stdio는 errno를 설정하지 않고 ferror ()가 true를 반환하게합니다.

이 일이 두 번 연속 발생합니까? pwd 내장은 오류 메시지를 인쇄 한 후 clearerr ()를 호출하므로 stdout 오류 플래그가 'sticks'이더라도이를 지워야합니다.

기록을 업데이트 할 수 없습니까?

이 오류는 디렉토리를 변경하는 데 성공했지만 명령 cd ../Directory을 에 쓸 수는 없다고 생각 합니다 $HOME/.bash_history. 이 파일이 손상되지 않았으며 쓰기 가능한지 확인했습니다. 또한 $HOME디렉토리가 쓰기 가능하고 가득 차지 않은지 확인하십시오 .

$ df -h $HOME
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  157G  225G  42% /home

/home파티션은 많은 공간을 사용할 수 있습니다. ".bash_history"에서 이상한 것을 찾을 수 없으며 소유자 만 읽고 쓰도록 설정되어 있습니다. 터미널을 종료 할 때마다 해당 터미널의 데이터가 여전히 거기에 있습니다. 여러 터미널 창을 동시에 실행했기 때문에 이것이 가능합니까?
Village

@Village-아마도 명령이 쉘에서 실행될 때마다 히스토리 파일을 잠그고 완료되면 해제해야합니다. 다른 모든 프로세스는 동일하게 수행됩니다.
slm

bash는 ~/.bash_history명령을 실행 한 직후에 쓰지 않지만 세션이 닫힌 후에 씁니다 .
SOFe

@Pemapmodder-맞습니다. OP가 askubuntu.com/questions/67283/… 과 같은 작업을 수행했는지 확실하지 않습니다 .
slm

나는 똑같은 문제에 직면했고 그것이 사실이 아니라고 확신합니다. ( su root그 당시에 나는 즉시 tail /root/.bash_history아무런 관련도 보지 않았으며, exit정상적인 사용자에게 돌아가서, 그 다음 sudo tail /root/.bash_history줄, cd)을 반복 한 이후 로 실제로 쓰여졌습니다.
SOFe

3

cd 명령은 별명이거나 bash 함수일 가능성이 높습니다.

typeset -f  # displays functions
alias       # display aliases

위의 명령으로 찾을 수 없으면 명령 which cd의 경로를 찾습니다 cd.

를 찾아 cd정상적인 시작 스크립트의 별칭 또는 기능 정의 .bash_profile, .bashrc그리고 .profile.


typeset -f, aliaswhich cd모두는 아무것도 반환하지 않으며 다른 파일은을 포함합니다 PATH=~/.context/tex/texmf-linux/bin/:$PATH.
Village

2
사용type -a cd
글렌 잭맨

1
type -a cd"cd는 쉘 내장"입니다.
Village
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.