집 >운영 및 유지보수 >리눅스 운영 및 유지 관리 >Linux에서 환경 변수를 구성하는 방법에 대한 단계 공유(그림)
Linux의 환경 변수에는 시스템 수준과 사용자 수준이 있습니다. 시스템 수준 환경 변수는 시스템에 로그인하는 모든 사용자가 읽어야 하는 시스템 변수이고, 사용자 수준 환경 변수는 시스템에 로그인할 때 로드되는 환경 변수입니다. 사용자가 시스템을 사용합니다. 따라서 다음 글에서는 리눅스 환경변수 설정에 관한 관련 정보를 주로 소개합니다. 도움이 필요한 친구들이 참고할 수 있습니다.
소개
우리가 보통 리눅스를 사용하다 보면 환경 변수를 설정해야 하는 경우가 많습니다. 이때 우리는 보통 온라인으로 검색만 하면 누군가 자신의 경험을 소개해 줍니다. 그러나 문제는 그들의 방법이 다르다는 것입니다. 일부는 구성이 /etc/profile에 있다고 말하고, 일부는 /etc/environment에 구성되어 있다고 말하고, 일부는 ~/.bash_profile에 구성되어 있다고 말하고, 일부는 ~에 구성되어 있다고 말합니다. /.bashrc, ~/.bashrc에 구성되어 있다고도 하고, ~/.bash_login에 구성되어 있다고도 하고, ~/.profile에 구성되어 있다고도 합니다. . . 이것은 정말 공평하고 합리적입니다. . . 그렇다면 문제는 Linux가 구성 파일을 어떻게 읽고 그 기반이 무엇인지입니다. 다음 기사에서는 자세한 소개를 제공하므로 살펴 보겠습니다.
Documentation
저는 출처를 밝히지 않고 결론만 말하면 사람들에게 "내가 왜 당신을 믿어야 하는가"라는 느낌을 주는 행동을 항상 싫어합니다. 그리고 사실, 출처가 없는 일상적인 토론에서 도출된 결론은 기본적으로 다른 사람들의 말을 바탕으로 합니다. 사실, 다른 사람에게 물어보는 대신 문서를 물어보세요. 한참을 검색해본 결과, 실제로는 bash 명령의 man 문서에 환경변수 설정 관련 문서가 있다는 것을 알게 되었습니다. 결국 이것이 우리가 흔히 사용하는 쉘입니다.
$man bash에서 다음과 같은 텍스트를 찾았습니다.
INVOCATION A login shell is one whose first character of argument zero is a -, or one started with the --login option. An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option. PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state. The following paragraphs describe how bash executes its startup files. If any of the files exist but cannot be read, bash reports an error. Tildes are expanded in filenames as described below under Tilde Expan‐ sion in the EXPANSION section. When bash is invoked as an interactive login shell, or as a non-inter‐ active shell with the --login option, it first reads and executes com‐ mands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior. When a login shell exits, bash reads and executes commands from the file ~/.bash_logout, if it exists. When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files exist. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of /etc/bash.bashrc and ~/.bashrc. When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute. Bash behaves as if the following com‐ mand were executed: if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi but the value of the PATH variable is not used to search for the file‐ name.
이 텍스트를 통해 소위 환경 변수 구성 파일이 쉘 로그인 시 자동으로 로드되는 파일이라는 것을 알았습니다. 그러나 그가 정의한 로그인은
login 쉘 로그인의 두 가지 유형으로 나뉩니다.
대화형 쉘 로그인.
로그인 쉘 로그인
소위 로그인 쉘 로그인은 실제로 비밀번호를 입력해야 하는 로그인을 말합니다. 구체적으로는 부팅, ssh 로그인 또는 "로그인을 위해 비밀번호를 입력하는 척"하기 위해 bash --login을 입력하는 것이 포함됩니다. 이 로그인 방법에서는 시스템이 먼저 /etc/profile 파일을 읽은 다음 ~/.bash_profile, ~/.bash_login 및 ~/.profile 세 파일을 순서대로 검색하고 첫 번째 파일만 실행합니다. 그 중 하나의 파일이 존재합니다. 특히 마지막 세 파일 간의 "논리적 OR" 관계에 주의해야 합니다. 많은 경우 ~/.profile 파일이 수정된 것을 발견하게 됩니다. 다시 로그인한 후에 구성이 적용되지 않는 이유는 무엇입니까? 이는 처음 두 파일 중 하나가 시스템에 존재하여 나머지 파일을 읽지 못할 수 있기 때문입니다.
아래 세 그림은 이 문제를 잘 보여줍니다.
대화형 셸 로그인
소위 대화형 셸 로그인은 실제로 로그인 셸 로그인에 상대적입니다. 조건. 우리는 일반적으로 로그인 후 터미널을 열려면 마우스 오른쪽 버튼을 클릭하거나 대화형 쉘 로그인인 터미널을 열려면 CTRL+ALT+T를 클릭합니다. 이 로그인 방식에서는 시스템이 /etc/bash.bashrc와 ~/.bashrc를 차례로 읽어서 실행하게 됩니다. 일반적인 상황에서는 일부 상수와 별칭이 기본적으로 ~/.bashrc 파일에 기록됩니다. 특히 $PS1 변수는 bash 프롬프트의 형식, 스타일 및 색상을 결정합니다.
참고:
이 두 가지 로그인 방법은 서로 다른 구성 파일을 읽고 서로 겹치지 않는다는 점에 유의해야 합니다. 따라서 환경 변수를 구성해야 할 때 우리 고유의 환경 변수에 따라 구성해야 합니다. 로그인 방법은 필요한 변수를 다른 파일로 구성합니다. 예를 들어 다음과 같은 고전적인 질문이 있습니다.
일반적인 문제
비정상적인 환경 구성 파일 구성의 예는 SSH를 사용하여 서버에 로그인할 때 프롬프트가 다음과 같다는 것입니다.
bash-4.3$
예, 세 번째와 같습니다 위의 그림 그림의 bash 처럼 프롬프트가 굉장히 이상하고, ls 를 입력하면 파일과 폴더의 색상 구분이 없습니다. 이 문제는 분명히 $PS1 환경 변수가 구성되지 않아 기본값을 사용하게 되었기 때문에 발생하지만, .bashrc 파일을 확인하면 $PS1 변수가 정의되어 있는 것으로 나타났습니다. , 그러나 ssh는 로그인 셸에 속하므로 로그인 시 읽는 구성 파일은 /etc/profile과 같은 파일이며 .bashrc는 읽혀지지 않습니다. 이 문제의 원인은 일반적으로 실수로 /etc/profile의 기본 구성 파일을 삭제했기 때문에 해결 방법도 매우 간단합니다. . . .bashrc의 일부 파일을 /etc/profile에 복사하세요.
이 질문이 우리에게 주는 깨달음은 서버에 대한 변수를 구성할 때 /etc/profile 또는 ~/.bash_profile에서 구성을 시도한다는 것입니다. 왜냐하면 .bashrc 파일은 기본적으로 ssh를 사용하여 서버에 로그인할 때 사용되지 않기 때문입니다. 자신의 컴퓨터에 대한 환경 변수를 구성할 때 .bashrc에서 구성해 보십시오. 그러면 터미널을 여는 동안 이 파일을 읽어서 로그아웃하지 않고도 구성을 적용할 수 있습니다(/etc/는 로그아웃 후 다시 로그인 후 적용됩니다.)
요약
위 내용은 Linux에서 환경 변수를 구성하는 방법에 대한 단계 공유(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!