이것은 나를 짜증나게 한다. 여러 가지 제안(모두 다른 파일과 구문을 사용함)을 보았지만 그 중 아무 것도 작동하지 않았습니다.
특정 사용자에 대한 환경 변수를 설정하는 방법은 무엇입니까? 저는 데비안을 쥐고 있습니다. 파일에 ABC = "123"을 넣어야 하는 정확한 구문은 무엇입니까?
답변1
셸의 초기화 파일에 선언을 넣어야 합니다.
bash, ash, ksh 또는 기타 Bourne 스타일 쉘을 사용하는 경우 다음을 추가할 수 있습니다.
ABC="123"; export ABC
.profile
귀하의 파일( ) 에 있습니다${HOME}/.profile
. 이는 대부분의 Unix 설치, 특히 Debian의 기본값입니다..bash_profile
로그인 쉘이 bash인 경우 (${HOME}/.bash_profile
) 또는 대신 사용할 수 있습니다.bash_login
.노트:이러한 파일이 존재하고 로그인 셸이 bash인 경우
.profile
ssh나 텍스트 콘솔을 통해 로그인하면 파일을 읽을 수 없지만.bash_profile
GUI 문서에서 로그인하면 계속 읽을 수 있습니다. 또한 그렇지 않은 경우.bash_profile
사용하십시오.bashrc
.zsh를 로그인 셸로 설정한 경우
~/.zprofile
대신 zsh를 사용하세요~/.profile
.tcsh를 사용하는 경우 다음을 추가하세요.
setenv ABC "123"
파일
.login
(${HOME}/.login
)다른 쉘을 사용하는 경우 쉘 매뉴얼을 확인하여 환경 변수를 정의하는 방법과 쉘이 시작될 때 어떤 파일이 실행되는지 알아보십시오.
답변2
/etc/environment
파일을 사용하여 환경 변수를 설정합니다. 그런 다음 파일에 다음 줄을 추가합니다 /etc/environment
.
ABC="123"
지금알파벳모든 사용자 세션에서 변수에 액세스할 수 있습니다. 변수 출력을 테스트하려면 먼저 다음 명령을 사용하여 환경 변수를 새로 고치십시오.
source /etc/environment
그리고 실행하십시오 echo $ABC
.
답변3
이는 거의 모든 쉘에서 사용할 수 있는 일반적인 절차입니다. 그럼에도 불구하고 사용자가 일반적으로 어떤 셸에서 로그인하는지 알아야 합니다.
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
그런 다음 이 쉘이 일반적으로 읽는 도트 파일을 파악해야 합니다.
man $shell
작동할 수 있는 지름길은 쉘 이름이 포함된 도트 파일을 나열하는 것입니다.
ls ~/.*${shell}*
로그인 중에 파일 중 하나가 실제로 읽혔는지 확인하려면 각 파일에서 파일 이름을 인쇄하면 됩니다. 예를 들면 다음과 같습니다.
echo .bashrc
로그인하면 어떤 파일을 읽고 있는지 확인한 다음 수정할 파일을 결정할 수 있습니다. echo "$0"
값은 $0
쉘이 도트 파일을 처리하는 방법에 따라 다르며 오해의 소지가 있을 수 있으므로 유사한 값을 사용하려고 시도해서는 안 됩니다 .
변수를 "영구적으로" 선언하는 경우 세션에만 적용된다는 점에 유의하세요. 변수의 값은 세션 없이는 액세스할 수 없으므로 세션 외부에서는 의미가 없습니다. "읽기 전용"을 의미하는 경우 이는 쉘에 따라 다르며불다당신은 그것을 사용할 수 있습니다 :
declare -r VAR
이미 값이 있는 경우 또는
declare -r VAR=value
할당하기도 합니다. 모든 쉘에 이 기능이 있는 것은 아닙니다.
대부분의 쉘에서 변수를 선언하려면 변수 이름( [A-Za-z_][A-Za-z0-9_]*
) 뒤에 등호( 및공간 없음등호 주위), 그 뒤에 값이 옵니다(값이 단순하지 않은 한 따옴표로 묶는 것이 좋습니다 [A-Za-z0-9_]+
). 예를 들어:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1
답변4
정확한 명령은 다음과 같습니다.
echo 'export ABC = "123"' >> ~/.profile