내 OS에서:
echo $CLUTTER_IM_MODULE
fcitx5
어떤 파일에 변수 정의가 포함되어 있는지 어떻게 알 수 있나요?
.bashrc 또는 /etc/bash.bash에서 env를 정의할 수 있다는 것을 알고 있습니다.
문자열이 포함된 파일을 가져오는 데는 많은 시간이 걸립니다 CLUTTER_IM_MODULE
.
sudo grep -r CLUTTER_IM_MODULE /
목표를 달성하는 현명한 방법이 있나요?
답변1
변수가 쉘 프로필 스크립트에 정의되어 있다고 확신하는 경우그리고locate
확장된 정규식과 NUL로 구분된 출력(예: mlocate
또는 ) 을 지원하는 버전이 있는 경우 plocate
다음과 같이 실행할 수 있습니다(실행하는 것보다 훨씬 빠릅니다 grep -r
).
locate -0 --regex '/(\.(bash_)?profile|(bash)?\.?bashrc|etc/profile.d/|etc/environment$)' |
xargs -0r grep -H '[^$]CLUTTER_IM_MODULE='
노트:
grep 옵션은
-H
파일 이름이 하나만 반환되더라도 파일 이름이 항상 출력과 일치하도록 보장합니다locate
(가능성은 낮지만 -H를 사용해도 아무런 해가 없습니다).대소문자를 구분하지 않는 일치를 위해 grep 옵션을 사용할 수도 있습니다
-i
.셸 프로필 스크립트가 다른 위치에서 발견되거나 다른 이름을 가질 수 있는 경우 정규식을 적절하게 조정해야 합니다. 예를 들어, 내 원래 정규 표현식에는 검색 기능(일부 시스템에서 쉘 변수를 정의할 수 있는 또 다른 위치)이 없었기
/etc/environment
때문에 이를 추가했습니다.이것은 변수가 어떤 파일인지 알려주지 않으며 말할 수도 없습니다.예전에는실제로 정의되어 있으면 파일만 표시할 수 있습니다.가능한변수의 현재 값을 담당합니다(어떤 변수가 실제로 실행되었는지 알 수 없으며 변수가 스크립트에 설정되었다는 것만 볼 수 있습니다).
locate
데이터베이스는 일반적으로 하루에 한 번만 업데이트됩니다. 마지막 실행 이후에 프로필 스크립트가 생성된 경우 파일을 찾을 수 없습니다.파일 권한에 따라 다음 명령을 실행해야 할 수도 있습니다.
sudo locate ... | xargs -0r sudo grep -H
답변2
Bash는 이것을 추적하지 않습니다. 다른 파일에서 CLUTTER_IM_MODULE을 찾아보세요.