2016-11-05 2 views
0

만 수출 제의/etc/environment 파일/etc/environment 파일이 실행되지 않는 특정 명령

alias ...="cd ../../" 
alias ls="ls -al" 
export blah="blah blah" 

의 내용입니다 명령이 실행되었습니다.이 명령은 env를 사용하여 확인할 수 있습니다. 별칭이 설정되지 않았습니다.

source /etc/environment을 실행하면 별칭이 예상대로 설정됩니다. 내가 놓친 게 있니? 또한/etc/environment는 시스템 부팅시에만 읽혀지는 것으로 읽습니다. 그게 사실이야?

내가

+0

사용자가이 항목을 사용할 수 있어야합니까? – Cyrus

+0

sudo 사용자와 저 자신이 그것을 사용할 수 있어야합니다. 나는/etc/profile에서 그 요구 사항을 너무 정확하게 얻을 수있다. 그러나 질문에서와 같이 이것이 왜 일어나고 있는지 어떤 생각입니까? –

답변

1

/etc/environment RHEL 7에서 실행하고는 로그인시 모든 사용자에 대한 환경 변수를 설정하기위한 것입니다. 따라서이 파일에 export을 사용할 필요가 없습니다.

alias을이 파일에 추가하는 것은 쉘 스크립트가 아니며 variable = value 쌍만 허용하기 때문에 작동하지 않습니다.

에게 는

은/etc/환경은 PAM-ENV 모듈에 의해 사용 로그인/비 로그인 비대화 형/대화도 배시/비 배시에 불가지론된다 정도로 스크립팅이나 글로브의 확장은 할 수 없다 익숙한. 이 파일은 변수 = 값 쌍만 허용합니다.

별칭을 내보내거나 전역으로 설정할 수 없습니다. 모든 셸 인스턴스에서 다시 설정해야합니다. 사용하려는 파일은 사용자의 홈 디렉토리에 ~/.bashrc입니다. 이 파일은 사용자가 bash 쉘을 열 때마다 실행됩니다. 따라서이 파일에 설정된 별칭과 변수는 해당 쉘에서만 효과가 있습니다.

대화식 bash 쉘의 시스템 전체 .bashrc 파일 인 /etc/bash.bashrc을 사용할 수도 있습니다.


당신의 /etc/environmentexport이 일을 실제로 작성 ENV 변수는 PAM-ENV 파서 특별히 /etc/environment 것을 모르는 사람에 대한 혼란을 방지하기 export 키워드를 무시하는 이유

쉘 스크립트 아니다 .

당신은 pam_env.c 소스 코드를 예를 here - Linux-PAM/pam_env.c v0.79에 사용 가능한

/* skip over "export " if present so we can be compat with 
    bash type declarations */ 
    if (strncmp(key, "export ", (size_t) 7) == 0) 
     key += 7; 

에서 것을 볼 수 있습니다. 라인 00234을 참조하십시오.

+0

"활성 상태 인 셸에서이 파일을 처리해야하므로이 파일에 별칭 추가가 작동하지 않습니다." –

+1

실제로, 나는'/ etc/environment'가 스크립팅을 전혀 허용하지 않는다는 것을 발견했습니다. 여기서 변수 만 설정할 수 있습니다. –

+0

그러나 파일이 내보내기 명령을 허용했습니다. 왜 그런가? –

관련 문제