Я озадачен этим довольно давно. В $PROMPT_COMMAND
bash в OS X есть команда с именем update_terminal_cwd
. Я уверен, что это не встроенный bash, и, скорее всего, существует только в OS X. Но я не знаю, что именно он делает. Кто-нибудь знает?
21
xterm
управляющий код для установки текста в строке заголовка. Наиболее доступной документацией является, пожалуй, Linux Bash Prompt Howto . В источниках есть реальная документацияxterm
, IIRC./etc/bashrc_Apple_Terminal
(найдена с помощью уловки, изученной здесь ). Но я обнаружил, что в сеансе экрана $ PROMPT_COMMAND становится пустой строкой, что означает, что,/etc/bashrc_Apple_Terminal
вероятно, больше не выполняется. Ты знаешь почему?/etc/bashrc
, он использует переменную,$TERM_PROGRAM
чтобы определить терминал и запустить соответствующий,/etc/bashrc_$TERM_PROGRAM
если он существует. Таким образом, в сеансе экрана,$TERM_PROGRAM
вероятно, не установлен или установлен на что-то другое, чемApple_Terminal
.Строка формата с непрозрачным секретным кодированием, '\ e] 7;% s \ a'. Подозреваемый.
Из того, что я собираю, "file: // $ HOSTNAME" замаскирован, поэтому вы не можете видеть удаленный протокол: шпионаж хоста.
источник
update_terminal_cwd
это не переменная окружения, это имя функции. Он определен в виде обычного текста,/etc/bashrc
иprintf
функция не может ничего делать, кроме печати отформатированных строк на экране. Наконец, ссылка на vuln, которую вы разместили, включает в себя выполнение произвольных функций путем добавления текста к определению переменной среды ... который не имеет ничего общего с тем, что обсуждается здесь. И как браузеры имеют отношение к сценариям оболочки?typeset -f
он покажет все «пользовательские» функции, и вот как это появилось. Если бы они пытались сделать что-то отрывочное, они бы не сделали это легко заметным.