Jawaban:
Ini memperbarui permintaan untuk menggemakan Direktori Kerja Saat Ini (CWD) dan didefinisikan dalam /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"
}
xtermkode kontrol untuk mengatur teks judul bar. Dokumentasi yang paling mudah diakses mungkin adalah Linux Bash Prompt Howto . Ada dokumentasi nyata di xtermsumbernya, IIRC.
/etc/bashrc_Apple_Terminal(ditemukan melalui trik yang dipelajari di sini ). Tetapi saya menemukan bahwa di dalam sesi layar, $ PROMPT_COMMAND menjadi string kosong, yang berarti /etc/bashrc_Apple_Terminalmungkin tidak dieksekusi lagi. Apa kamu tahu kenapa?
/etc/bashrc, ia menggunakan variabel $TERM_PROGRAMuntuk menentukan terminal dan menjalankan yang sesuai /etc/bashrc_$TERM_PROGRAMjika ada. Jadi dalam sesi layar, $TERM_PROGRAMmungkin tidak diatur, atau diatur ke sesuatu selain Apple_Terminal.
String format disandikan rahasia buram, '\ e] 7;% s \ a'. Tersangka.
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
Dari apa yang saya kumpulkan, "file: // $ HOSTNAME" disembunyikan sehingga Anda tidak dapat melihat protokol jarak jauh: host spionage.
update_terminal_cwdbukan variabel lingkungan, itu adalah nama fungsi. Ini didefinisikan dalam teks yang jelas di /etc/bashrcdan printffungsi tidak memiliki kemampuan untuk melakukan apa pun kecuali mencetak string yang diformat ke layar. Akhirnya, tautan vuln yang Anda posting melibatkan menjalankan fungsi arbitrer dengan menambahkan teks ke definisi variabel lingkungan ... yang tidak ada hubungannya dengan apa pun yang sedang dibahas di sini. Dan apa hubungannya browser dengan shell scripting?
typeset -fitu akan menampilkan semua fungsi "yang ditentukan pengguna" dan itulah bagaimana ini muncul. Jika mereka mencoba melakukan sesuatu yang samar, mereka tidak akan membuat ini mudah terlihat.