Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

PowerShell의 환경 변수

환경 변수는 Linux, Mac 또는 Windows 컴퓨터의 전역 설정으로, 명령을 실행할 때 사용할 시스템 셸용으로 저장됩니다. 대부분은 설치 또는 사용자 생성 중에 기본적으로 설정됩니다.

예를 들어 홈 디렉토리는 로그인할 때 환경 변수로 설정됩니다. PowerShell에서 어떻게 보이는지는 운영 체제에 따라 다릅니다.

Windows:

PS C:\Users\bogus> Get-Variable HOME -valueOnly
C:\Users\bogus

Linux:

pwsh> Get-Variable HOME -valueOnly
HOME=/home/seth

Mac:

pwsh> Get-Variable HOME -valueOnly
HOME=/Users/bogus

일반적으로 환경 변수를 직접 사용하지 않지만 필요에 따라 개별 애플리케이션과 데몬에서 참조합니다. 그러나 환경 변수는 기본 설정을 무시하거나 시스템이 자체적으로 만들 이유가 없는 새 설정을 관리해야 할 때 유용할 수 있습니다.

이 글은 오픈소스 PowerShell 환경의 환경변수에 대한 글이므로 Windows, Linux, Mac에서 실행되는 PowerShell에 적용할 수 있습니다. Bash 셸 사용자는 Bash 환경 변수에 대한 내 기사를 참조해야 합니다.

이 기사에서는 오픈 소스 운영 체제 Linux에서 PowerShell을 실행했습니다. 명령은 플랫폼에 관계없이 동일하지만 출력은 다를 수 있습니다(예:통계적으로 사용자 이름이 seth일 가능성은 낮습니다. ).

환경 변수란 무엇입니까?

PowerShell의 환경 변수는 시스템에 운영 체제 환경에 대한 정보를 제공하는 특수한 종류의 변수입니다. 환경 변수를 사용하면 Windows 레지스트리의 변수와 특정 세션에 대해 설정된 변수를 보고 변경할 수 있습니다.

PowerShell에서 환경 변수는 Env:에 저장됩니다. PowerShell 환경 공급자를 통해 액세스할 수 있는 "드라이브" , PowerShell의 하위 시스템. 이것은 물리적 드라이브가 아니라 가상 파일 시스템입니다.

환경 변수가 Env:에 존재하기 때문에 드라이브를 사용하려면 Env:를 추가해야 합니다. 참조할 때 변수 이름에. 또는 작업 위치를 환경:으로 설정할 수 있습니다. Set-Location으로 운전 모든 환경 변수를 지역 변수로 취급할 수 있도록 명령:

PS> Set-Location Env:
PS> pwd

Path
----
Env:/

환경 변수는 로그인 세션에 대한 정보를 컴퓨터에 전달합니다. 예를 들어 애플리케이션이 기본적으로 데이터 파일을 저장할 위치를 결정해야 할 때 일반적으로 HOME 환경 변수. HOME을 설정한 적이 없을 것입니다. 직접 변수를 만들 수 있지만 대부분의 환경 변수는 운영 체제에서 관리하기 때문에 존재합니다.

Get-ChildItem을 사용하여 시스템에 설정된 모든 환경 변수를 볼 수 있습니다. Env: 내에서 명령 운전하다. 목록이 길기 때문에 out-host -paging을 통해 출력을 파이프하십시오. 쉽게 읽을 수 있도록:

PS> Get-ChildItem | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles
MODULESHOME  /usr/share/Modules
OLDPWD       /home/seth
PATH         /opt/microsoft/powershell/6:/usr/share/Modules/bin
PSModulePath /home/seth/.local/share/powershell/Modules
PWD          /home/seth
[...]

환경:이 아닌 경우 드라이브를 선택한 다음 Env: 를 추가하여 동일한 작업을 수행할 수 있습니다. 당신의 명령에:

PS> Get-ChildItem Env: | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles

환경 변수는 일반 변수에 사용되는 것과 동일한 구문으로 설정, 호출 및 지울 수 있습니다. 다른 변수와 마찬가지로 세션 중에 설정한 모든 항목은 해당 세션에만 적용됩니다.

변수를 영구적으로 변경하려면 Windows의 Windows 레지스트리 또는 셸 구성 파일(예:~/.bashrc ) Linux 또는 Mac에서. PowerShell에서 변수를 사용하는 데 익숙하지 않다면 계속하기 전에 PowerShell의 변수 문서를 읽어보세요.

환경 변수는 무엇에 사용됩니까?

다른 환경 변수는 컴퓨터 내의 여러 다른 시스템에서 사용됩니다. 내 PATH 예를 들어 변수는 쉘에 중요하지만 Java(경로도 있지만 일반 시스템 폴더가 아닌 중요한 Java 라이브러리에 대한 경로임)와 같은 경우에는 훨씬 덜 중요합니다. 그러나 USER 변수는 서비스를 요청하는 사람을 식별하기 위해 여러 다른 프로세스에서 사용됩니다.

오픈 소스 NSIS(Nullsoft Scriptable Install System) 프레임워크와 같은 설치 마법사는 새 애플리케이션을 설치할 때 환경 변수를 업데이트합니다. 때로는 운영 체제의 의도된 도구 집합 외부에 무언가를 설치할 때 환경 변수를 직접 관리해야 할 수도 있습니다. 또는 기본 설정에 맞게 환경 변수를 추가하도록 선택할 수 있습니다.

일반 변수와 어떻게 다릅니까?

일반 변수를 생성할 때 변수는 로컬로 간주됩니다. 즉, 변수를 생성한 셸 외부에서 정의되지 않습니다.

예를 들어, 변수를 생성합니다:

PS> Set-Variable -Name VAR -Value "example"
PS> gv VAR -valueOnly
example

현재 셸 내에서도 새 셸 시작:

PS> pwsh
PS c:\> gv VAR -valueOnly
gv : Cannot find a variable with the name 'example'.

반면에 환경 변수는 범위가 전역적입니다. 그것들을 생성한 셸과 별도로 존재하며 다른 프로세스에서 사용할 수 있습니다.

환경 변수는 어떻게 설정합니까?

환경 변수를 설정할 때 $Env:를 사용하여 환경 변수임을 명시해야 합니다. 표기법:

PS Env:/> $Env:FOO = "hello world"
PS Env:/> Get-ChildItem FOO
hello world

테스트로 새 세션을 시작하고 방금 만든 변수에 액세스합니다. 하지만 변수는 환경 변수이므로 $Env:를 앞에 추가해야 합니다. :

PS Env:/> pwsh
PS c:\> $Env.FOO
hello world

변수를 자식 프로세스에서 사용할 수 있도록 설정했지만 여전히 임시 변수일 뿐입니다. 작동하고 존재하는지 확인할 수 있으며 모든 프로세스에서 사용할 수 있지만 생성한 셸이 닫히면 소멸됩니다.

프로필에서 환경 변수를 어떻게 설정합니까?

환경 변수가 세션 간에 유지되도록 하려면 CurrentUser,AllHosts와 같은 PowerShell 프로필에 환경 변수를 추가해야 합니다. 프로필, HOME/Documents/Profile.ps1에 있음 :

PS> Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:FOO = "hello world"'

이 행을 추가하면 실행된 모든 PowerShell 세션이 FOO를 인스턴스화합니다. 환경 변수를 만들고 값을 hello world로 설정합니다. .

현재 PowerShell 세션을 제어하는 ​​6개의 기본 프로필이 있으므로 자세한 내용은 Microsoft 개발자 블로그를 참조하세요.

새로운 환경 변수를 어떻게 발견합니까?

환경 변수를 마음대로 만들고 조작할 수 있으며 일부 응용 프로그램은 그렇게 합니다. 이 사실은 많은 환경 변수가 대부분의 애플리케이션에서 사용되지 않는다는 것을 의미하며, 자신의 임의 변수를 추가하면 일부는 전혀 사용되지 않을 수 있습니다.

따라서 질문은 다음과 같습니다. 어떤 환경 변수가 의미가 있는지 어떻게 알 수 있습니까? 답은 애플리케이션 문서에 있습니다.

예를 들어 Python은 경로에 적절한 Python 경로를 추가하도록 제안합니다. 설치 중 환경 변수. [참고:PATH?] 거부하면 환경변수 수정 방법을 알았으니 직접 값을 설정할 수 있습니다.

설치하는 모든 애플리케이션에 대해서도 마찬가지입니다. 설치 프로그램은 환경에 적절한 변수를 추가해야 하므로 Env:를 수정할 필요가 없습니다. 수동으로. 애플리케이션을 개발하는 경우 설치 프로그램이 사용자를 위해 동일한 작업을 수행해야 합니다.

개별 애플리케이션에 대한 중요한 변수를 찾으려면 해당 사용자 및 개발자 문서를 참조하십시오.