특정 전역 매개변수를 구성하는 방법 결정

특정 전역 매개변수를 구성하는 방법 결정

중복 가능성:
환경 변수의 출처를 확인하는 방법

특정 구성이 존재하는 파일의 위치를 ​​확인할 수 있는 방법이 있는지 궁금합니다. 예를 들어 전역 매개변수가 있다는 것을 알고 TMOUT이를 변경하고 싶지만 해당 매개변수가 어디에 구성되어 있는지 모르겠습니다. 알아요이것여기에 이런 질문이 올라왔는데, 명령어를 기반으로 변수가 나타나는 순서를 조사하는 것 외에 다른 방법이 있는지 알고 싶습니다 env.

답변1

이 명령은 실행하는 데 시간이 오래 걸리지만(시스템의 모든 파일을 확인하기 때문에) 파일을 찾아야 합니다.

find / -type f -print0 | xargs -0 grep -w 'TMOUT=' /dev/null

또 다른 접근 방식은 쉘이 로그인 쉘이 아닐 때 설정되는지( env -i bash), 설정되는지( env -i bash --login) 등 어떤 상황에서 설정되는지 알아보는 것이다. , 또는 등 $HOME의 파일을 수동으로 체크인할 수 있습니다 . 환경 변수를 지정하는 파일도 있으며 그 중 하나에서 설정할 수 있습니다..profile.env.bashrc.bash_profile/etc/

로그인 쉘이 이면 ksh 쉘 자체에 의해 설정되었음을 ksh알 수 있습니다 .$TMOUT


편집하다:위 명령줄의 덜 명확한 기능 중 일부를 설명하려면 다음을 수행하십시오.

이 관용구는 find ... -print0 | xargs -0 ...매우 일반적입니다. -print0기본값 대신 사용하는 요점 -print은 에서 -print0실제 개행 문자가 포함된 파일 이름이 올바르게 표시된다는 것입니다. -0옵션을 전달하는 것은 동일한 규칙을 이해하는 xargs것입니다 .xargs

/dev/null첫 번째 인수로 전달하는 일반적인 관행 grep도 설명할 가치가 있습니다. 를 읽을 때 파일의 끝만 얻으므로 /dev/null비어 있지 않은 문자열과 일치하지 않습니다 grep. 따라서 파일이 클릭되지 않습니다. xargs마지막 grep이 실행되었을 때 검색할 파일이 하나만 남아 있는 상황을 올바르게 처리하기 위해 grep 명령줄에 이를 지정하기만 하면 됩니다 . grep에 파일 인수만 있는 경우 명령줄을 지정하지 않고 일치 항목을 나열합니다. 이와 같이:

~/tmp/t$ echo hello > a
~/tmp/t$ echo hi > b
~/tmp/t$ grep '^h.*' a
hello
~/tmp/t$ grep '^h.*' a b
a:hello
b:hi

답변2

이는 귀하의 질문에 대한 정확한 답변은 아니지만 일부 답변이 될 수 있습니다.

StackOverflow: Linux: 환경 변수는 어디에 저장되나요?

편집하다:

쉘 스크립트를 디버깅할 때 일반적으로 -x를 추가합니다. #!/bin/bash -x 쉘에서 실행할 수도 있습니다.bash -x

# su - test

    test$ bash -x
     unset a r
    + . /etc/bash_completion.d/yast2-completion.sh
       **(file sourced)**
    ++ YAST=/sbin/yast
    ++ YAST_MODLIST=()
       **(variables set from file)**
       #....
    ++ /usr/bin/dircolors -b /etc/DIR_COLORS
    + eval 'LS_COLORS='\''no=00
       #....

관련 정보