OS X 터미널에서 update_terminal_cwd의 기능


21

나는 지금 얼마 동안 그것에 의아해합니다. 에서 $PROMPT_COMMANDOS X에서의 bash라는 명령이 있습니다 update_terminal_cwd. 나는 그것이 bash가 내장되어 있지 않으며 OS X에만 존재한다고 확신합니다. 그러나 정확히 그것이 무엇을하는지 모르겠습니다. 누구나 아는가?

답변:


26

현재 작업 디렉토리 (CWD)를 반향하도록 프롬프트를 업데이트하고 다음에 정의되어 있습니다 /etc/bashrc.

update_terminal_cwd() {
    # Identify the directory using a "file:" scheme URL,
    # including the host name to disambiguate local vs.
    # remote connections. Percent-escape spaces.
    local SEARCH=' '
    local REPLACE='%20'
    local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
    printf '\e]7;%s\a' "$PWD_URL"
}

Apple Terminal 앱에서 쉘을 실행하는 경우에만 함수가 정의된다는 점에 주목할 가치가 있습니다. iTerm을 사용하는 경우에는 정의되지 않습니다.
nwinkler

도피 7은 도대체 무엇이며 어디에 인쇄됩니까? 그 문서는 어디에 있습니까? :)
와일드 카드

1
@Wildcard xterm제목 표시 줄 텍스트를 설정 하는 제어 코드입니다. 가장 접근하기 쉬운 문서는 아마도 Linux Bash Prompt Howto 일 것 입니다. xterm출처 IIRC 에 실제 문서가 있습니다 .
tripleee

2
이 기능은의 9 행에 설정되어 있습니다 /etc/bashrc_Apple_Terminal( 여기에서 학습 한 트릭을 통해 발견됨 ). 그러나 화면 세션에서 $ PROMPT_COMMAND가 빈 문자열이되어 /etc/bashrc_Apple_Terminal더 이상 실행되지 않을 것입니다. 왜 그런지 아십니까?
zyxue

1
@zyxue를 보면 /etc/bashrc변수 $TERM_PROGRAM를 사용하여 터미널을 결정하고 해당되는 /etc/bashrc_$TERM_PROGRAM경우 해당 터미널을 실행 합니다. 따라서 화면 세션에서 $TERM_PROGRAM설정되지 않았거나 이외의 것으로 설정되어있을 수 Apple_Terminal있습니다.
David Moles

-15

불투명 한 비밀 인코딩 형식 문자열, '\ e] 7; % s \ a'. 용의자.

local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"

내가 수집 한 것에서 "file : // $ HOSTNAME"이 숨겨져 있으므로 원격 프로토콜 : 호스트 간첩을 볼 수 없습니다.


1
... 또는 $ HOSTNAME은 스크립트가 실행중인 시스템에 따라 변경되는 변수입니다. ?!? 편집증 많이? 다른 답변에 나열된 코드가 화면에 인쇄하는 것 이외의 작업을 수행 할 수 있다고 생각하면 bash 스크립팅이 어떻게 작동하는지 전혀 모릅니다.
tubedogg

메모를받지 못했습니까? - "ShellShock"bash 취약성 web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271 1) 어떤 경우에도 1) 해당 환경 변수를 'update_terminal_cwd'로 설정하지 않았다는 알려지지 않은 출처 무엇보다 함수입니다. 자동 의심. 대량 침투. 아무도 그것을 원하지 않습니다. 아마도 NIST는 Apple OSX 및 브라우저 Firefox / Chrome / Opera "취약점"을보고합니까?
user982671

7
당신은 당신이 무슨 말을하는지 전혀 모른다는 것을 계속 보여줍니다. update_terminal_cwd환경 변수가 아니라 함수의 이름입니다. 일반 텍스트로 정의되어 /etc/bashrc있으며 printf함수는 인쇄 형식 문자열을 화면에 표시하는 것 이외의 작업을 수행 할 수 없습니다. 마지막으로 게시 한 vuln 링크에는 환경 변수 정의에 텍스트를 추가하여 임의의 기능을 실행하는 것이 포함됩니다 ... 여기서 논의중인 것과는 아무런 관련이 없습니다. 그리고 wtf 브라우저는 쉘 스크립팅과 관련이 있습니까?
tubedogg

이것은 요청 된 질문에 대답하지 않습니다 ( 이 진술을 정당화하기위한 자세한 분석 은 여기 를 참조 하십시오 ). 요청 된 질문에 대한 답변을 위해 답변 상자를 예약하십시오. 감사합니다!
DW

1
@tubedogg haha ​​예, 방금 수행하면 typeset -f모든 "사용자 정의"기능이 표시되며 이것이 팝업되는 방식입니다. 그들이 스케치를하려고한다면 이것을 쉽게 볼 수 없었을 것입니다.
Kolob Canyon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.