ตอนนี้ฉันงงแล้ว ใน$PROMPT_COMMAND
การทุบตีใน OS X update_terminal_cwd
ที่มีคำสั่งที่เรียกว่า ฉันแน่ใจว่าไม่ใช่ทุบตีในตัวและมีแนวโน้มมากที่สุดใน OS X เท่านั้น แต่ฉันไม่รู้ว่ามันทำอะไร ใครรู้หรือไม่
ตอนนี้ฉันงงแล้ว ใน$PROMPT_COMMAND
การทุบตีใน OS X update_terminal_cwd
ที่มีคำสั่งที่เรียกว่า ฉันแน่ใจว่าไม่ใช่ทุบตีในตัวและมีแนวโน้มมากที่สุดใน OS X เท่านั้น แต่ฉันไม่รู้ว่ามันทำอะไร ใครรู้หรือไม่
คำตอบ:
อัพเดตพร้อมต์เพื่อสะท้อนไดเร็กทอรีการทำงานปัจจุบัน (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"
}
/etc/bashrc
มันจะใช้ตัวแปร$TERM_PROGRAM
เพื่อพิจารณาเทอร์มินัลและเรียกใช้ที่สอดคล้องกัน/etc/bashrc_$TERM_PROGRAM
หากมีอยู่ ดังนั้นในเซสชั่นหน้าจออาจจะไม่ได้ถูกกำหนดหรือมีการตั้งค่าอย่างอื่นที่ไม่ใช่$TERM_PROGRAM
Apple_Terminal
สตริงรูปแบบที่เข้ารหัสลับทึบแสง '\ e] 7;% s \ a' สงสัย.
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
จากสิ่งที่ฉันรวบรวม "file: // $ HOSTNAME" ถูกปิดบังดังนั้นคุณจะไม่เห็นโปรโตคอลระยะไกล: host espionage
update_terminal_cwd
ไม่ใช่ตัวแปรสภาพแวดล้อมมันเป็นชื่อของฟังก์ชั่น มันถูกกำหนดไว้ในข้อความที่ชัดเจนใน/etc/bashrc
และprintf
ฟังก์ชั่นไม่ได้มีความสามารถในการทำอะไรยกเว้นสตริงที่จัดรูปแบบการพิมพ์ไปที่หน้าจอ ท้ายที่สุดลิงก์ vuln ที่คุณโพสต์นั้นเกี่ยวข้องกับการใช้งานฟังก์ชั่นตามอำเภอใจโดยต่อท้ายข้อความลงในนิยามตัวแปรสภาพแวดล้อม ... ซึ่งไม่มีส่วนเกี่ยวข้องกับสิ่งใด ๆ เบราว์เซอร์จะทำอะไรกับสคริปต์เชลล์ได้หรือไม่
typeset -f
มันจะแสดงฟังก์ชั่น "ผู้ใช้กำหนด" ทั้งหมดและนั่นคือสิ่งที่เกิดขึ้น หากพวกเขากำลังพยายามทำบางสิ่งที่ไม่สมบูรณ์พวกเขาจะไม่สามารถมองเห็นสิ่งนี้ได้อย่างง่ายดาย