Узнайте, где определен $PATH

Узнайте, где определен $PATH

Недавно я установил систему 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

Связанный контент