Zastanawia mnie to od dłuższego czasu. W $PROMPT_COMMAND
bashu w OS X znajduje się polecenie o nazwie update_terminal_cwd
. Jestem pewien, że nie jest to wbudowane bash i najprawdopodobniej istnieje tylko w OS X. Ale nie wiem, co dokładnie robi. Ktokolwiek wie?
21
xterm
kod kontrolny do ustawiania tekstu paska tytułu. Najbardziej dostępną dokumentacją jest być może Linux Bash Prompt Howto . Wxterm
źródłach znajduje się prawdziwa dokumentacja , IIRC./etc/bashrc_Apple_Terminal
(znalezionym przez sztuczkę nauczoną tutaj ). Ale uważam, że w sesji ekranowej $ PROMPT_COMMAND staje się pustym łańcuchem, co oznacza, że/etc/bashrc_Apple_Terminal
prawdopodobnie nie jest już wykonywany. Wiesz dlaczego?/etc/bashrc
, używa zmiennej,$TERM_PROGRAM
aby określić terminal i uruchomić odpowiedni,/etc/bashrc_$TERM_PROGRAM
jeśli istnieje. Więc w sesji ekranowej$TERM_PROGRAM
prawdopodobnie nie jest ustawiony lub jest ustawiony na coś innego niżApple_Terminal
.Nieprzezroczysty ciąg formatu zakodowanego tajnego „\ e] 7;% s \ a”. Posądzać.
Z tego, co zbieram, „file: // $ HOSTNAME” jest maskowany, więc nie widzisz protokołu zdalnego: szpiegostwo hosta.
źródło
update_terminal_cwd
nie jest zmienną środowiskową, to nazwa funkcji. Jest on zdefiniowany w postaci zwykłego tekstu,/etc/bashrc
aprintf
funkcja nie może nic robić poza drukowaniem sformatowanych ciągów na ekranie. Wreszcie, opublikowany przez ciebie link do wulgaryzmów polega na wykonywaniu dowolnych funkcji poprzez dołączanie tekstu do definicji zmiennej środowiskowej ... która nie ma nic wspólnego z niczym, co jest tutaj omawiane. I czy wtf mają do czynienia ze skryptami powłoki?typeset -f
, pokaże wszystkie funkcje zdefiniowane przez użytkownika i tak to się pojawiło. Gdyby próbowali zrobić coś szkicowego, nie zrobiliby tego łatwo.