인터넷에서 다른 사람들도 이 문제를 겪는 것을 보았지만 해결책이 결정적이지 않았기 때문에 다시 한 번 이 문제에 대해 알리고 싶었습니다.
우분투 위키의 이 페이지에 따르면: https://help.ubuntu.com/community/EnvironmentVariables 세션 전체 환경 변수를 설정하는 권장 방법은 ~/.pam_environment를 수정하는 것입니다.
내 목표는 다음과 같습니다.
- 내 홈 폴더의 특정 위치에 대한 경로를 값으로 갖는 환경 변수 ANDROID_HOME을 만들고 싶습니다.
- PATH에 두 개의 폴더를 추가하고 싶습니다.
내가 한 일은 다음과 같습니다. ~/.pam_environment 파일이 존재하지 않아서 파일을 만들고 다음 줄을 추가했습니다.
ANDROID_HOME=${HOME}/Android/Sdk
PATH DEFAULT=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
로그아웃했다가 다시 로그인했습니다.
결과는 예상되지 않습니다. 터미널을 열고 $ANDROID_HOME을 에코했는데 그게 내가 얻은 것입니다.
${HOME}/Android/Sdk
${HOME}
내 홈 폴더 경로로 대체되지 않은 것 같습니다 . 왜 이렇게이다?
$ANDROID_HOME에 대한 -ing을 관찰합니다 cd
(Android/Sdk는 실제로 내 홈 폴더에 존재합니다).
anvar@crazymachine:~$ cd $ANDROID_HOME
bash: cd: ${HOME}/Android/Sdk: No such file or directory
또한 $PATH를 에코하면 다음이 제공됩니다.
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:${HOME}/Android/Sdk/tools:${HOME}/Android/Sdk/platform-tools
변수가 논리적으로 가정할 수 있는 값으로 대체되지 않는 이유는 무엇입니까? 특히 앞서 언급한 사이트의 예에서 변수가 값 내부에서 사용될 수 있다는 인상을 주었을 때 더욱 그렇습니다.
GUI 프로그램도 액세스할 수 있는 세션 전체 환경 변수를 설정하는 올바른 방법은 무엇입니까?
답변1
의 예위키를 통해 세션 변수를 설정하는 경우 ~/.pam_environment
메모에 다음과 같이 명시되어 있습니다.
변수 확장이 작동하려면 PATH 수정에 사용되는 구문(스크립트 파일과 다른 구문)이 필요합니다.
따라서 첫 번째 행은 다음과 같아야 합니다.
ANDROID_HOME DEFAULT=${HOME}/Android/Sdk
답변2
두 가지 제안:
첫째 - 환경 선언문의 형식은 다음과 같아야 합니다.
ANDROID_HOME=$HOME/Android/Sdk
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
둘째, 새 환경 설명을~/.profile
답변3
export HOME
경로 변수를 설정한 후에 필요할 수도 있다고 생각합니다 (~/.bashrc에서 수행합니다).