부팅 시 스크립트를 통해 환경 변수를 어떻게 설정합니까?

부팅 시 스크립트를 통해 환경 변수를 어떻게 설정합니까?

Ubuntu 시스템(10.04)에서 부팅 시 몇 가지 환경 변수를 설정하고 싶지만 다음과 같이 스크립트를 통해 해당 값을 생성하고 싶습니다.

export THE_ENV_VAR=$(script_to_execute_and_use_stdout_from)
  • 이렇게 하고 싶은 이유는 환경 변수를 설정하는 데 사용되는 명령을 실행하는 데 시간이 오래 걸리기 때문입니다(10초 정도). 그래서 부팅 후 한 번만 수행하고 싶습니다. 어쨌든 현재는 부팅 시 명령 결과를 캐시하여 후속 호출이 빠르게 진행되도록 하여 env를 사용하지 않고 이 문제를 해결했습니다. 전혀 변수.

에서 설정을 시도했지만 /etc/environmentrhs만 그대로 복사합니다.

시작 시 스크립트를 실행해 보았지만 /etc/init.d/작동하지 않는 것 같습니다.

아이디어?

답변1

부팅 시 사용할 수 있는 시스템 전체 환경 변수를 설정하려면 해당 변수를 /etc/environment. 이 파일은 스크립트 파일이 아니며 한 줄에 하나씩 할당 표현식으로 구성됩니다. 이와 같이:

SYSTEM_FOO=barnone

메모: /etc/environment에서는 변수 확장이 작동하지 않습니다.

원본 정보:help.ubuntu.com

답변2

~/.bash_profile그걸 넣거나~/.bashrc

gedit ~/.bashrc

비대화형 쉘(스크립트)에서 해당 변수를 사용해야 하는 경우 .bash_profile을 사용하고 쉘에서 변수를 설정하는 경우 ~/.bashrc를 사용하십시오.

그래도 작동하지 않으면 더 자세한 정보가 필요합니다. 특히 어떤 변수를 어떤 목적으로 설정하고 있습니까?

답변3

이는 좋은 방법은 아니지만 환경 변수를 커널 매개변수로 지정할 수 있습니다. 리눅스 커널선적 서류 비치주변에 좋은 정보가 있습니다(중요한 단락은 굵은 글씨로 표시됨).

인수 목록

커널 명령줄은 공백으로 구분된 문자열(부팅 인수) 목록으로 구문 분석됩니다. 대부분의 부팅 인수는 다음 형식을 갖습니다.

 name[=value_1][,value_2]...[,value_10]

여기서 'name'은 관련 값(있는 경우)이 제공될 커널 부분을 식별하는 데 사용되는 고유 키워드입니다. 현재 코드는 키워드당 쉼표로 구분된 매개변수를 10개만 처리하므로 10개의 제한은 실제입니다. (그러나 설정 기능이 지원한다고 가정하면 비정상적으로 복잡한 상황에서는 최대 10개의 추가 매개변수와 함께 동일한 키워드를 재사용할 수 있습니다.)

대부분의 정렬은 커널 소스 파일 init/main.c에 코딩되어 있습니다. 먼저, 커널은 인수가 특수 인수 'root=', 'nfsroot=', 'nfsaddrs=', 'ro', 'rw', 'debug' 또는 'init' 중 하나인지 확인합니다. 이러한 특수 인수의 의미는 아래에 설명되어 있습니다.

그런 다음 지정된 인수 문자열(예: 'foo')이 특정 장치 또는 커널 일부에 대한 설정 함수('foo_setup()')와 연결되어 있는지 확인하기 위해 설정 함수 목록을 탐색합니다. 커널에 foo=3,4,5,6 줄을 전달하면 커널은 bootsetups 배열을 검색하여 'foo'가 등록되었는지 확인합니다. 그렇다면 'foo'와 관련된 설정 함수(foo_setup())를 호출하고 커널 명령줄에 제공된 대로 인수 3, 4, 5, 6을 전달합니다.

위에서 설명한 대로 설정 기능으로 허용되지 않는 'foo=bar' 형식의 모든 항목은 설정할 환경 변수로 해석됩니다.
(쓸데없는?) 예는 'TERM=vt100'을 부팅 인수로 사용하는 것입니다.

커널에 의해 선택되지 않고 환경 변수로 해석되지 않은 나머지 인수는 일반적으로 init(1) 프로그램인 PID 1로 전달됩니다. init 프로세스에 전달되는 가장 일반적인 인수는 단일 사용자 모드에서 컴퓨터를 부팅하고 일반적인 데몬을 모두 실행하지 않도록 지시하는 'single'이라는 단어입니다. 어떤 인수가 허용되는지 알아보려면 시스템에 설치된 init(1) 버전의 매뉴얼 페이지를 확인하세요.

이것AskUbuntu 답변에는 커널 부팅 매개변수를 수정하는 방법에 대한 좋은 지침이 있습니다.

답변4

에 명령을 입력하세요 /etc/rc.local. 머리에 달린 댓글을 꼭 읽어보세요.

관련 정보