$PATH가 정의된 위치를 확인하세요.

$PATH가 정의된 위치를 확인하세요.

최근에 Arch-Linux 시스템을 설치했습니다. 내가 입력하면

echo $PATH

/home/user/dir그것은 (다른 것 중에서) 내 어딘가에 설정한 것을 기억하는 내 디렉토리를 가리킵니다 . 나는 그것을 루트 사용자로 가지고 있기 때문에 에 있을 수도 없고 ~/.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이 다음과 같은 경우건너뛰다, 디렉토리는 자동으로 건너뜁니다. ACTION이 다음과 같은 경우반복하다, grep은 각 디렉토리 아래의 모든 파일을 재귀적으로 읽습니다. 이는 다음과 같습니다.-아르 자형옵션.

실패하면 간단히 검색을 다음으로 확장할 수 있습니다.모두파일:

sudo grep -r "/home/user/dir" /

또는 변수를 수정하는 모든 파일을 검색할 수 있습니다 PATH.

sudo grep -r "PATH=" /

답변2

일반적으로 전역 경로에 사용자 디렉터리를 루트로 두는 것은 좋지 않은 생각입니다.) 파일을 확인하셨습니까 /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

관련 정보