
Недавно я установил систему Arch-Linux. Если я введу
echo $PATH
он указывает (среди прочего) на каталог внутри моего, /home/user/dir
который я помню, что где-то настроил. У меня он также как пользователь root, поэтому он не может быть в ~/.bashrc
и не находится также в /root/.bashrc
. Я также посмотрел внутри /etc/profile
и /etc/bash.bashrc
не смог найти его там.
Есть ли способ узнать, где он установлен?
решение1
Попробуйте найти каталог во всех файлах в /etc
:
sudo grep -r "/home/user/dir" /etc
Переключатель -r
делает grep
поиск /home/user/dir
всодержаниевсех файлов в /etc
и его подкаталогах.
Отgrep(1) - страница руководства Linux:
-дДЕЙСТВИЕ,--каталоги=ДЕЙСТВИЕ
Если входной файл является каталогом, используйте ACTION для его обработки. По умолчанию ACTION — эточитать, что означает, что каталоги читаются так же, как если бы они были обычными файлами. Если ACTION -пропускать, каталоги молча пропускаются. Если ДЕЙСТВИЕ -рекурсия, grep рекурсивно считывает все файлы в каждом каталоге; это эквивалентно-рвариант.
Если это не поможет, вы можете просто расширить поиск довсефайлы:
sudo grep -r "/home/user/dir" /
Или вы можете выполнить поиск всех файлов, которые изменяют PATH
переменную:
sudo grep -r "PATH=" /
решение2
Обычно плохая идея помещать пользовательские каталоги в глобальный путь от имени root ;) Вы проверяли файл /etc/environment
?
решение3
@Dennis указывает мне на хорошую идею! Я поискал внутри себя /etc
и нашел ее, но с другой командой, так как его команда ищет только имена файлов (насколько я понимаю).
Тот, который я успешно использовал, был
find / -type f -exec grep -i /home/user/dir '{}' \; -print
решение4
Если вы ищете, где что-то определено в вашем PATH, вы можете попробовать эту альтернативу, используясеребряный искательдля быстрого поиска.
По умолчанию он выводит совпадения с номерами строк, поэтому объедините с , egrep
чтобы получить только вывод имен файлов. Он также выведет номера строк, содержащие совпадения, чтобы cut
изолировать имена файлов и uniq
если вы не хотите дубликатов. Конечно, любую из переданных команд можно опустить, если вам не нужен полный вывод совпадений.
ag -s '/home/user/dir' | egrep '^\d+' | cut -d ':' -f 1 | uniq