현재 작업 디렉토리를 변경하는 방법?


11

emacs의 현재 작업 디렉토리를 변경하는 방법?

set default-directory은 emacs 프로세스의 현재 작업 디렉토리에 영향을 미치지 않으며,이 디렉토리는를 통해 확인할 수 있습니다 lsof -p pid.


1
"일종의 OS"인 Emacs에는 현재 단일 작업 디렉토리가 없습니다. 따라서 프로세스의 cwd로 보이는 것은 우연히 발생하며 실제로 문서화되지 않았습니다. Emacs의 C 코드를 보면 현재 원하는 것을 할 수있는 방법이 없다는 인상을 받았습니다. 따라서 M-x report-emacs-bug이를 새로운 기능으로 요청할 수 있습니다 .
Stefan

1
Linux를 사용한다고 가정하면 OS 수준에서 작업하여 cwd를 강제로 변경할 수 있습니다 . 자세한 내용 은 unix.stackexchange.com/questions/281994/… 를 참조하십시오.
TTimo

답변:


4

Emacs cwd가 프로세스 를 제어하기 위해 제공하는 유일한 방법 은 --chdir명령 행 인수 라고 생각합니다 . 프로세스가 시작되면 현재 수정할 수있는 방법이 없습니다.


15

M-x cd

문제가 해결 될 것입니다.


1
문서에 따르면 cd"DIR을 현재 버퍼의 기본 디렉토리로 만듭니다." 버퍼 당 값이며 기존의 다른 버퍼 나 새로 만든 버퍼에는 적용되지 않을 것이라고 가정합니다.
mojo 2013

@mojo 일지 모르지만 다른 모든 버퍼가 닫힐 때 기본 버퍼로 그렇게하면 어쨌든 남아 있습니다. 그래서 여전히 매우 실용적
Keldon Alleyne

5

C-h f cd:

cd의 대화식 컴파일 된 Lisp 함수입니다 files.el.

(cd DIR)

확인은 DIR현재 버퍼의 기본 디렉토리가됩니다.

환경에 CDPATH변수가 포함 된 경우 path-separator상대 디렉토리 이름을 분석 할 때 해당 디렉토리 목록 중 하나를 시도하십시오 (발생 횟수로 구분 ). 경로 구분자는 GNU 및 GNU 유사 시스템에서 콜론입니다.

또한 왜 변경 default-directory이 "현재 디렉토리"를 변경 하지 않는지 설명하십시오 : (setq default-directory "/my/favorite/dir").


프로세스 제어 블록의 항목 인 emacs 프로세스의 cwd를 의미하며 = lsof -p pid =를 통해 쉽게 확인할 수 있습니다. = default-directory =는 이맥스의 내부적 인 것입니다. cwd를 변경 해야하는 이유는 tmux가 포 그라운드 프로세스의 cwd를 새 창 / 창의 시작 디렉토리로 사용하기 때문입니다.
FunkyBaby

내가 참조. 그런 다음 귀하의 질문은 명확하지 않았습니다. Emacs 프로세스의 현재 작업 디렉토리를 변경한다는 것은 무엇을 의미합니까? 프로세스가 존재하면 변경 하시겠습니까? 두 번 이상?
Drew

말 그대로 emacs의 = cwd =를 변경하고 있습니다. "두 번 이상"? 그게 무슨 뜻 이니. = cwd =는 고정 된 것이 아닙니다. c에서 man 2 chdir. 파이썬에서는 os.chdir입니다. elisp (emacs)에서 어떻게하는지 알고 싶습니다.
FunkyBaby

@Stefan의 답변을 참조하십시오.
Drew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.