Как определить, какой rc-файл является источником сеанса tmux при создании нового окна?

#bash #tmux

Вопрос:

Мой tmux ведет себя «странно», и я не знаю, что происходит.

Некоторое время назад я определил prompt_git функцию внутри своего .bashrc файла и начал регулярно использовать tmux. Позже я удалил эту функцию из .bashrc файла. После этого всякий раз, когда я создаю новый сеанс tmux или создаю новое окно в существующем сеансе tmux, он будет продолжать выдавать мне эту ошибку -bash: prompt_git: command not found , пока я не сделаю это вручную source ~/.bashrc . Я почти уверен, что удалил все фрагменты prompt_git из всех моих файлов, связанных с bash, например .bashrc , или .bash_profile и т. Д.

Что еще более озадачивает, так это то, что новый сеанс tmux автоматически создает мой текущий .bashrc файл. Я подтвердил это, добавив echo "hello, this is from .bashrc file" строку в .bashrc файл, и я вижу это сообщение каждый раз, когда создаю новый сеанс tmux. Но мне все равно придется source ~/.bashrc снова удалить вышеупомянутое сообщение об ошибке.

Я использую tmux всего пару месяцев, так что, возможно, есть тонкости, о которых я не знаю. Кто-нибудь может дать мне несколько предложений по отладке? Огромное спасибо!

Правка 1

По предложению меу я добавил в свой .bashrc файл следующие строки.

 prompt_git() {
  sleep 999
}
 

Затем я создаю новое окно tmux внутри моей текущей запущенной сессии tmux (это новое окно, конечно, сразу же замораживается), и в существующем окне tmux я запустил ps fax , что дало мне:

 3033275 ?        Ss    17:25 tmux -CC new -s main
 573620 pts/8    Ss     0:00  _ -bash
 578771 pts/8    R      0:00  |   _ ps fax
 578638 pts/7    Ss     0:00  _ -bash
 578713 pts/7    S      0:00      _ -bash
 578714 pts/7    S      0:00          _ sleep 999
 

Я использую интеграцию tmux iTerm2, поэтому -CC используется опция.

Если я это сделаю lsof -p 578714 (последняя строка выше), это даст мне

 COMMAND    PID USER   FD   TYPE DEVICE  SIZE/OFF      NODE NAME
sleep   578714  hwu  cwd    DIR   0,50      4096 211943425 /home/hwu (10.5.0.81:/home)
sleep   578714  hwu  rtd    DIR   0,20      4096         2 /
sleep   578714  hwu  txt    REG   0,20     33128        50 /usr/bin/sleep
sleep   578714  hwu  mem    REG   0,20 106176928     11148 /usr/lib/locale/locale-archive
sleep   578714  hwu  mem    REG   0,20   2156272       141 /usr/lib64/libc-2.17.so
sleep   578714  hwu  mem    REG   0,20    163312       123 /usr/lib64/ld-2.17.so
sleep   578714  hwu    0u   CHR  136,7       0t0        10 /dev/pts/7
sleep   578714  hwu    1w  FIFO   0,11       0t0  84140428 pipe
sleep   578714  hwu    2u   CHR  136,7       0t0        10 /dev/pts/7
 

Идя задом наперед, lsof -p 578713 дает

 COMMAND    PID USER   FD   TYPE DEVICE  SIZE/OFF      NODE NAME
bash    578713  hwu  cwd    DIR   0,50      4096 211943425 /home/hwu (10.5.0.81:/home)
bash    578713  hwu  rtd    DIR   0,20      4096         2 /
bash    578713  hwu  txt    REG   0,20    964536        21 /usr/bin/bash
bash    578713  hwu  mem    REG   0,20     61560       189 /usr/lib64/libnss_files-2.17.so
bash    578713  hwu  mem    REG   0,20 106176928     11148 /usr/lib/locale/locale-archive
bash    578713  hwu  mem    REG   0,20   2156272       141 /usr/lib64/libc-2.17.so
bash    578713  hwu  mem    REG   0,20     19248       145 /usr/lib64/libdl-2.17.so
bash    578713  hwu  mem    REG   0,20    174576       217 /usr/lib64/libtinfo.so.5.9
bash    578713  hwu  mem    REG   0,20    163312       123 /usr/lib64/ld-2.17.so
bash    578713  hwu  mem    REG   0,20     26970      1382 /usr/lib64/gconv/gconv-modules.cache
bash    578713  hwu    0u   CHR  136,7       0t0        10 /dev/pts/7
bash    578713  hwu    1w  FIFO   0,11       0t0  84140428 pipe
bash    578713  hwu    2u   CHR  136,7       0t0        10 /dev/pts/7
bash    578713  hwu  255u   CHR  136,7       0t0        10 /dev/pts/7
 

lsof -p 578638 gives

 bash    578638  hwu  cwd    DIR   0,50      4096 211943425 /home/hwu (10.5.0.81:/home)
bash    578638  hwu  rtd    DIR   0,20      4096         2 /
bash    578638  hwu  txt    REG   0,20    964536        21 /usr/bin/bash
bash    578638  hwu  mem    REG   0,20     61560       189 /usr/lib64/libnss_files-2.17.so
bash    578638  hwu  mem    REG   0,20 106176928     11148 /usr/lib/locale/locale-archive
bash    578638  hwu  mem    REG   0,20   2156272       141 /usr/lib64/libc-2.17.so
bash    578638  hwu  mem    REG   0,20     19248       145 /usr/lib64/libdl-2.17.so
bash    578638  hwu  mem    REG   0,20    174576       217 /usr/lib64/libtinfo.so.5.9
bash    578638  hwu  mem    REG   0,20    163312       123 /usr/lib64/ld-2.17.so
bash    578638  hwu  mem    REG   0,20     26970      1382 /usr/lib64/gconv/gconv-modules.cache
bash    578638  hwu    0u   CHR  136,7       0t0        10 /dev/pts/7
bash    578638  hwu    1u   CHR  136,7       0t0        10 /dev/pts/7
bash    578638  hwu    2u   CHR  136,7       0t0        10 /dev/pts/7
bash    578638  hwu    3r  FIFO   0,11       0t0  84140428 pipe
bash    578638  hwu  255u   CHR  136,7       0t0        10 /dev/pts/7
 

и lsof -p 3033275 дает

 COMMAND     PID USER   FD      TYPE             DEVICE SIZE/OFF      NODE NAME
tmux    3033275  hwu  cwd       DIR               0,50     4096 211943425 /home/hwu (10.5.0.81:/home)
tmux    3033275  hwu  rtd       DIR               0,20     4096         2 /
tmux    3033275  hwu  txt       REG               0,20   423128      5368 /usr/bin/tmux
tmux    3033275  hwu  mem       REG               0,20    61560       189 /usr/lib64/libnss_files-2.17.so
tmux    3033275  hwu  mem       REG               0,20   142144       205 /usr/lib64/libpthread-2.17.so
tmux    3033275  hwu  mem       REG               0,20    19248       145 /usr/lib64/libdl-2.17.so
tmux    3033275  hwu  mem       REG               0,20  2156272       141 /usr/lib64/libc-2.17.so
tmux    3033275  hwu  mem       REG               0,20   109976       207 /usr/lib64/libresolv-2.17.so
tmux    3033275  hwu  mem       REG               0,20   297792      2434 /usr/lib64/libevent-2.0.so.5.1.9
tmux    3033275  hwu  mem       REG               0,20   174576       217 /usr/lib64/libtinfo.so.5.9
tmux    3033275  hwu  mem       REG               0,20   163696      1514 /usr/lib64/libncurses.so.5.9
tmux    3033275  hwu  mem       REG               0,20    14424       221 /usr/lib64/libutil-2.17.so
tmux    3033275  hwu  mem       REG               0,20   163312       123 /usr/lib64/ld-2.17.so
tmux    3033275  hwu    0u      CHR                1,3      0t0      1028 /dev/null
tmux    3033275  hwu    1u      CHR                1,3      0t0      1028 /dev/null
tmux    3033275  hwu    2u      CHR                1,3      0t0      1028 /dev/null
tmux    3033275  hwu    3u  a_inode               0,12        0      9185 [eventpoll]
tmux    3033275  hwu    4u     unix 0x0000000000000000      0t0  61604412 socket
tmux    3033275  hwu    5u     unix 0x0000000000000000      0t0  61604413 socket
tmux    3033275  hwu    6u     unix 0x0000000000000000      0t0  84134152 /tmp/tmux-614/default
tmux    3033275  hwu    7u     unix 0x0000000000000000      0t0  61604414 /tmp/tmux-614/default
tmux    3033275  hwu    8u     unix 0x0000000000000000      0t0  62276472 /tmp/tmux-614/default
tmux    3033275  hwu    9u      CHR                5,2      0t0      1132 /dev/ptmx
tmux    3033275  hwu   10u      CHR                5,2      0t0      1132 /dev/ptmx
 

Изменить 2

У меня нет .tmux.conf файла в моем домашнем каталоге $и ни одного .tmux каталога. Пытался find $HOME -type f -print | grep prompt_git , но это все равно ничего мне не дало.

Комментарии:

1. Я ПРЕДПОЛАГАЮ, что вы не полностью удалили prompt_git . Готовы ли вы опубликовать свой .bashrc?

2. Я grep -n 'prompt_git' * .[^.]* заглянул в свой $HOME каталог, но ничего не нашел. Кроме того, он не выдает такое сообщение об ошибке в обычной оболочке вместо tmux.

3. Поскольку должно быть что-то вызывающее prompt_git , чего больше нет, вы можете создать сценарий оболочки с таким именем в своем ПУТИ и вставить sleep 999 в него a, затем открыть новое окно и ps fax посмотреть, что делает вызов. Для всех сеансов существует только один сервер tmux. Вы можете убить его (и все сеансы!!) с. tmux kill-server Вы можете посмотреть параметры среды для сеанса, tmux show-environment -g -t sessionname и это может дать ключ к разгадке; tmux set-environment -u varname может быть использовано для отмены установки переменной.

4. @meuh Спасибо за это предложение. Я видел в ps fax следующих строках 3033275 ? Ss 17:24 tmux -CC new -s main, 573620 pts/8 Ss 0:00 _ -bash, 573986 pts/8 R 0:00 | _ ps fax, 573893 pts/10 Ss 0:00 _ -bash, 573968 pts/10 S 0:00 _ -bash, 573969 pts/10 S 0:00 _ sleep 999 , к сожалению, комментарий не поддерживает многострочный блок кода… Я отделяю каждую строчку комой. Я использую -CC команду здесь, потому что я использую интеграцию tmux iTerm2 .

5. У меня нет .tmux.conf файла в моем $HOME каталоге и ни одного .tmux каталога, поэтому вместо этого я сделал find . -type f -print | grep prompt_git это, и все равно ничего не удалось найти.