Как отследить, какой файл добавляет путь в PATH?

Даже если ps не отражает реально используемую память, эта команда весьма полезна.

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'
2
31.10.2019, 02:38
3 ответа

Отдельный поиск и поиск файлов с помощью findи xargs, см. страницы manдля каждого из них.

sudo find / -type f -print0 | \
   xargs -0 --no-run-if-empty \
       grep -l 'PATH'

, чтобы вывести список всех имен файлов, в которых упоминается PATH. Добавить

| xargs less

для просмотра файлов.

Нельзя искать /some/deep/path/bin, потому что это можно выразить как $SDP/bin, насколько нам известно.

0
27.01.2020, 22:24

Возможно, это излишество, и вам следует (конечно )попытаться найти его, отследив порядок запуска скриптов, но бывают случаи, когда такое дерево становится трудно разобрать. Так что его можно просто найти:

grep --regexp='PATH=.*/path/that/you/try/to/find' --binary-files=without-match -r /

Обратите внимание, что это очень долгий процесс, и ваш жесткий диск будет сходить с ума на протяжении (вы в основном читаете каждый имеющийся у вас текстовый файл ).

0
27.01.2020, 22:24

Попробуйте:

grep -rF --binary-files=without-match ':/the/undesired/path' / 2> /dev/null

Если /the/undesired/pathравно $UNKNOWN_VARIABLE_NAME_FOR_THE_UNDESIRED_PATHили, это явно не сработает.

Обратите внимание, что /home/user/undesired/pathчасто назначается как $HOME/undesired/path.

Запустите то же самое без :, чтобы также получить назначения переменных:

grep -rF --binary-files=without-match '/the/undesired/path' / 2> /dev/null

Если это не сработает, найдите все PATHназначения и отфильтруйте их вручную:

grep -rwF --binary-files=without-match 'PATH=' / 2> /dev/null
0
27.01.2020, 22:24

Теги

Похожие вопросы