루트에 대한 영구 환경 변수를 설정하는 방법


40

지속적 환경 변수를 작성하려면 스크립트 파일을 /etc/profile.d 디렉토리에 추가하십시오. 예를 들면 다음과 같습니다.

# 내 스크립트
수출 MY_VAR = var_value

현재 사용자에게 올바르게 작동합니다.

alex @ alex-64 : ~ $ 에코 $ MY_VAR
var_value

이제 루트 사용자에 대해 동일한 환경 변수가 필요하지만 /etc/profile.d 스크립트는 루트에 대해 작동하지 않습니다.

alex @ alex-64 : ~ $ 에코 $ MY_VAR
var_value
alex @ alex-64 : ~ $ sudo su
root @ alex-64 : / home / alex # echo $ MY_VAR

root @ alex-64 : / home / alex # 

루트에 대해 동일한 변수를 어떻게 설정할 수 있습니까?


2
실행할 때 호출자 환경 에서 특정 변수를 유지하는 방법에 대한이 질문 sudo은 매우 관련이 있습니다. (그러나이 질문은 루트 자체 환경 을 사용자 정의하는 방법에 관한 것이기 때문에 복제본이 아닙니다 .)
Eliah Kagan

답변:


44

sudo 는 일반적으로 로컬 환경 변수를 유지하지 않습니다. -E그렇게 하려면 스위치 와 함께 사용해야합니다 . 즉, 루트에 대해 $ MYVARsudo -E su유지 합니다.

또는 실제로 시스템 전체에 영속 변수를 만들려면로 설정해야합니다 /etc/environment.


14
작동하지 않습니다 / etc / environemnt 변수가 sudo에 설정되지 않았습니다
Frederic Yesid Peña Sánchez

3
@ FredericYesidPeñaSánchez 그것은 CentOS에서 나를 위해했습니다. 당신은 거기에 스크립트를하지 않습니다, 당신은 각 줄에 간단한 할당을 수행, 즉FOO=bar
iamyojimbo

10

예를 들어 '~ / .bashrc'를 편집하여 자신의 환경 변수를 정의하는 프로세스와 마찬가지로 '/root/.bashrc'를 편집하여 루트의 환경 변수를 정의 할 수 있습니다.


8

Defaults env_reset에서로 정의 된 /etc/sudoers루트를 재설정합니다 .PATH/etc/environment

Defaults !env_reset재설정을 비활성화하거나 추가하도록 수정 하십시오.

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

두 번째 솔루션 (secure_path에 경로 추가를 의미)을 사용하려면 키가 무엇입니까?! 경로는 단지 가치입니다. 루트의 환경 변수에 ANDROID_NDK를 추가하고 싶습니다. 그래서 지금은 첫 번째 (! env_reset)를 사용하고 있습니다. 감사합니다.
Dr.jacky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.