2

Я вижу « awk », « find », « sed » и « which », которые на мгновение появляются в заголовке окна моего терминала при смене каталогов.  (И не все из них появляются всегда, и некоторые из них мне не хватает; я думаю, это потому, что заголовок меняется несколько раз, прежде чем перерисовывается пользовательский интерфейс.)

Хотя это, вероятно, всего лишь некоторые сценарии оболочки и дополнения, которые я установил по пути (возможно, состояние git в PS1), я хотел бы исследовать это, чтобы убедиться.  Есть ли простой способ узнать, какие скрипты вызывают их?

Примечание к контексту: я ищу общий следственный подход к обнаружению того, что вызывает подкоманды. Мое мышление программиста заставляет меня хотеть решение, которое временно заменило бы подкоманду на заглушку (а-ля #define/#undef), которая бы выводила трассировку стека в точке вызова, а затем либо вызывала исходную команду, либо просто отменяла , Этот подход может или не может быть применим к оболочке.

Кроме того: я в основном на OS X 10.8 с использованием GNU Bash 3.2.48.  Я не уверен, что версия системы и bash полностью соответствуют рассматриваемой проблеме - решение, которое работает и на моем экземпляре Debian, было бы неплохо.

2 ответа2

1

С bash вы можете использовать set -o verbose:

$ set -o verbose
update_terminal_cwd; 
$ cd ~/Documents
cd ~/Documents
update_terminal_cwd; 

bash -lv запустит новую оболочку входа в систему с той же опцией.

Например, update_terminal_cwd определен в /etc/bashrc , который не индексируется Spotlight. Но вы можете увидеть определение с помощью declare -f update_terminal_cwd или set .

sudo opensnoop -n bash показывает, к каким файлам обращаются процессы с именем bash.

0

Ваша проблема не с самой командой. Проблема со статусом git в PS1. Проще говоря, каждый раз, когда вы вводите команду, PS1 оценивается. Для отображения состояния git в текущем рабочем каталоге выполняется пакет команд. Например, он проверяет, является ли текущий каталог git-репо или нет, затем проверяет имя ветки, может быть какой-то номер коммита или какой статус вы решили сохранить.

Я не совсем уверен, если решение, предложенное Лаури, покажет такие оценки или нет, но вы можете дать ему шанс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .