쉘 스크립트에서 ~/.profile에 선언된 환경 변수(배열)에 액세스해 보십시오.

쉘 스크립트에서 ~/.profile에 선언된 환경 변수(배열)에 액세스해 보십시오.

저는 현재 이 문제와 싸우고 있습니다.

나는 SE에 대한 이전 게시물을 읽었으며 변수(또는 배열)를 배치하는 유일한 합리적인 방법 은 ~/.profile. 수십 개의 큰 문자열 배열입니다.
echo ${myarray[12]}myarray마디 없는값이 있으므로 스크립트를 실행할 때마다 처음부터 생성하는 대신 한 번만 빌드하고 싶습니다.

echo "elems = ${#myarray[@]}"그러나 will과 같은 간단한 확인은언제나반품0즉, 배열을 알 수 없으며 비어 있습니다.

그런데 왜 그럴까? 나는 실제로 선언된 변수를 예상했습니다.~/.profile ~ 할 것이다이 환경에서 실행하는 쉘 스크립트에서도 얻을 수 있습니다. (동일한 tty에서 왔음에도 불구하고 스크립트 내부에는 값이 표시되지 않습니다.)

답변1

배열은 환경 변수가 아니므로 환경 변수도 아닙니다(그리고될 수 없다)은 상위 프로세스의 하위 프로세스(예: 스크립트)에 의해 상속됩니다. "스크립트를 실행할 때마다 [배열]을 처음부터 새로 만들어야 합니다." 이것이 왜 어렵다고 생각하는지 모르겠습니다. 당신이 말했듯이 값이 일정하다면 필요한 것은 스크립트의 값을 메모리로 읽는 것뿐입니다. 배열을 초기화하는 코드로 인해 스크립트가 복잡해질까 걱정된다면 별도의 스크립트 파일에 넣고 "." 또는" source".

"변수(또는 배열)를 넣는 유일한 합리적인 방법은"이라는 생각을 어디서 얻었는지 모르겠습니다 ~/.profile.

관련 정보