Windows 배경에서 오는 것 같습니다. 그래서 나는 그것들 (나는 리눅스에 익숙하지 않은 것)을 대조 할 것이다. 내 의견에 대한 사용자의 답장을 발견하여 유용성을 파악하는 데 유용했습니다.
Windows에서 변수는 영구적 일 수 있습니다. 환경 변수라는 용어는 cmd 명령을 사용하여 cmd 셸에서 변수를 설정할 때뿐만 아니라 변수가 Windows GUI에서 설정되어 레지스트리에서 설정되고 새 cmd 창에서 볼 수있게되는 경우를 포함합니다. 예 : "환경 변수를 표시, 설정 또는 제거하며 매개 변수없이 사용하면 set은 현재 환경 설정을 표시합니다." Linux에서 set은 환경 변수를 표시하지 않으며, 호출하지 않는 쉘 변수/환경 변수를 나타냅니다. 또한 리눅스는 변수를 설정하는 데 사용하지 않습니다. (위치 매개 변수와 쉘 옵션은 제외하고 마지막에 메모로 설명합니다.) 단지 쉘 변수를 표시하기 위해서만 사용합니다. Windows는 예를 들어 설정 및 표시를 위해 세트를 사용합니다. 5로 설정하면 리눅스는 그렇지 않습니다.
리눅스에서는 부트 업시 변수를 설정하는 스크립트를 만들 수 있다고 생각합니다. /etc/profile
또는 /etc/.bashrc
이지만 그렇지 않은 경우 영구적이지 않습니다. RAM에 저장됩니다.
셸 변수와 환경 변수 사이에는 Linux가 있습니다. Linux에서 쉘 변수는 현재 쉘에만 있고 환경 변수는 해당 쉘과 모든 하위 쉘에 있습니다.
set
명령으로 쉘 변수를 볼 수 있습니다 (단, 윈도우와 달리 set 명령을 사용하여 변수가 설정되지 않습니다).
set -o posix; set
(set -o posix를 한 번 실행하면 너무 많은 불필요한 정보가 표시되지 않습니다.) 따라서 set
은 쉘 변수를 표시합니다.
당신은
쉘 변수, 예를 들어 설정하는 env
명령을 사용하여 환경 변수를 볼 수 있습니다 단지 a=5
환경 변수가 수출로 설정, 수출은 여기
당신이 쉘 변수 ZZZ는 설정을 참조 쉘 변수를 설정 ZZZ = 5, 볼 set
을 실행하지만, 환경으로 표시되지 않습니다 때 보여줍니다 변하기 쉬운.
여기에 yyy가 내보내기로 설정되어 있으므로 환경 변수입니다. 그리고 그것은 쉘 변수와 환경 변수 모두에서
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
다른 유용한 스레드
https://unix.stackexchange.com/questions/176001/how-can-i-list-all-shell-variables
https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference
조금 부연하고 다소 수정 하나 점 참고 -를 보여줍니다 무엇을보고 난 'set'은 "위치 매개 변수"와 "쉘 옵션/속성"을 설정하는 데 사용할 수 있으며, 기술적으로는 둘 다 변수이지만 man 페이지는 그렇지 않을 수도 있습니다. 그것들을 그처럼 묘사하십시오. 하지만 여전히 언급했듯이 set은 쉘 변수 나 환경 변수를 설정하지 않습니다. set asdf
을하면 $ 1을 asdf로 설정하고 echo $1
을하면 asdf가 표시됩니다. set a=5
을 수행하면 변수 a를 5로 설정하지 않습니다. 위치 매개 변수 $ 1을 "a = 5"문자열과 동일하게 설정합니다. 따라서 리눅스에서 a = 5를 설정했다면 아마 누군가 실수로 그 문자열을 $ 1에 넣기를 원하지 않는 한 실수 일 것입니다. 리눅스가 설정할 수있는 또 다른 것은 쉘 옵션/속성입니다. -o를 설정하면 해당 목록이 표시됩니다. 예를 들어, set -o verbose
을 해제하면 자세한 정보 표시가 켜지 며 (기본 설정은 꺼져 있지만이 설정에는 차이가 없습니다). 또는 set +o verbose
을 사용하여 자세한 정보를 표시하지 않을 수 있습니다. Windows에는 set 명령에 대한 사용법이 없습니다.
사용한 내보내기 명령에 대해 더 자세히 말하면 도움이됩니다. 더 많은 컨텍스트가 없으면 환경 변수를 설정하는 것입니다. http://en.wikipedia.org/wiki/Environment_variable#Unix –
[bash : 내보내기 사용 여부에 관계없이 변수 정의하기]를 참조하십시오 (http://stackoverflow.com/questions/1158091/bash-defining-a- variable-with-without-export) – tripleee
가능한 [unix export 명령] 복제본 (http://stackoverflow.com/questions/7328223/unix-export-command) –