$variable을 에코할 때 빈 출력이 나타나는 이유는 무엇입니까? [복사]

$variable을 에코할 때 빈 출력이 나타나는 이유는 무엇입니까? [복사]

echo변수를 파일에 저장 하고 싶습니다 . 명령을 실행할 때 echo $variable출력이 없는 검은색 영역이 나타납니다. 이유를 모르겠습니다.

파일 1의 내용:

name="Jhon"

내 결과물

여기에 이미지 설명을 입력하세요.

시도한 솔루션:

source /home/ec2-user/file1

그러다가 정답을 얻었습니다. 하지만 인스턴스에서 로그아웃했다가 다시 돌아오면 작동하지 않습니다.

다양한 유형의 인스턴스를 시도했지만 동일한 결과를 얻었습니다.

대부분의 Linux 튜토리얼에서는 변수를 수행할 때 여러 파일에서 변수를 가져옵니다. 왜 source명령을 실행해야 합니까 ?

답변1

"파일에 저장된 변수"는 실제로는 아닙니다. 대부분의 변수 유형은 실행 중인 프로세스(셸 또는 기타 프로그램) 상태에 존재합니다. (환경 변수, 셸 변수 등에는 차이가 있지만 여기서는 중요하지 않습니다.) 각 프로세스에는 고유한 변수 세트가 있습니다(환경 변수의 복사본이 생성될 때 하위 프로세스에 상속된다는 점은 제외).

유사한 명령을 사용하여 셸 프로세스에서 변수를 정의할 수 있지만 name="Jhon"이는 다른 프로세스가 아닌 해당 특정 셸 프로세스에서만 변수를 정의합니다. 게다가, 그것은실행 가능한 명령;정의는 실행 시에만 발생하며(예: 파일에 있는 경우) name="Rho"나중에 다른 명령(예: 또는 )을 실행하여 변경할 수 있습니다 unset name.

"어디서나" 변수를 정의하는 일반적인 방법은 ~/.bashrc와 같은 셸 초기화 파일에 변수를 정의하는 명령을 배치하는 것입니다. 그러나 이 정의는 쉘이 시작될 때 이 파일의 명령이 실행될 때만 실행됩니다. 예를 들어 bash 로그인 bash 쉘은 ~/대신 ~/.bash_profile(또는 ~/.bash_login 또는 ~/.profile)을 실행합니다. . bashrc; bash 이외의 쉘(예: zsh 및 dash)은 여전히 ​​다른 초기화 파일을 실행합니다.

답변2

rc지속성을 위해 또는 소스 파일에서 변수를 선언하십시오.rc

echo 'source /home/ec2-user/file1' >> /home/ec2-user/.bashrc

관련 정보