내 애플리케이션 프레임워크에 대한 매우 간단한 설치 프로세스를 수행하고 싶습니다. 모든 것이 잘 작동하지만 두 개의 환경 변수를 설정하고 싶습니다. 변수를 업데이트 PATH
하고 설정하고 싶습니다 HOME
.
상위 프로세스에 var를 설정할 수 없다는 것을 알고 있는데 어떻게 해야 합니까? 나는 사용자에게 실행을 요청하고 싶지 않고 source foo
, 사용자가 foo install
작업을 실행하고 완료할 수 있기를 원합니다.
물론 방법은 없나요?
편집: 죄송합니다. 실제 의미가 아니라 변수를 HOME
의미했습니다 MY_FRAMEWORK_HOME
!
답변1
일반적으로 변수는 $HOME
사용자가 다루어야 하는 것이 아닙니다. 사용자가 갑자기 다른 홈 디렉토리를 갖는 것을 원하지 않습니다! (이렇게 하려면 그가 설정한 홈 디렉토리를 편집해야 합니다 . 물론 권한이 /etc/passwd
필요합니다 .)root
이것은 $PATH
또 다른 것이며 그의 ~/.bashrc
또는 에 설정되어야 합니다 ~/.bash_profile
. 어떤 매개변수를 사용해야 하는지에 대한 다양한 의견이 있지만 여기서는 이에 대해 논의하지 않겠습니다.
/var/myapp/bin
사용자의 경로에 추가하고 싶다고 가정해 보겠습니다 . 다음 줄을 추가하면 됩니다.
export PATH="$PATH:/var/myapp/bin"
~/.bashrc
이미 존재하는 행을 추가하지 않고 이를 수행하는 좋은 방법에 대해 설명합니다 .스택 vi
교환:
ex -sc '$a
export PATH="$PATH:/var/myapp/bin"
.
$-,$!uniq
x' ~/.bashrc
이 방법으로 두 개 이상의 행을 추가하면 이미 존재하는 경우 추가를 방지하기 위한 동일한 안전 검사가 작동하지 않습니다. 이를 위해서는 다른 논리가 필요합니다.
또한 다른 작업 과정을 고려할 수도 있습니다. /usr/local/bin
일반적으로 이미 $PATH
.
/var/myapp/bin
따라서 위의 예에서와 같이 사용자의 PATH에 추가한다고 가정해 보겠습니다 . 처음에 이 작업을 수행하려는 이유는 /var/myapp/bin
사용자가 명령줄에서 실행할 수 있는 명령(셸 스크립트 또는 바이너리, 중요하지 않음)이 있기 때문입니다. 이러한 명령은 myapp_command
및 이라고 가정합니다 myapp_othercommand
.
다음과 같이 심볼릭 링크를 생성하여 PATH에서 사용할 수 있도록 할 수 있습니다.
ln -s /var/myapp/bin/myapp_command /usr/local/bin/myapp_command
ln -s /var/myapp/bin/myapp_othercommand /usr/local/bin/myapp_othercommand
첫 번째 매개변수 ln -s
는 TARGET이고, 두 번째 매개변수는 대상을 가리키는 생성하려는 LINK의 이름입니다. (자세한 내용은 를 참조하세요 man ln
.)
답변2
오직출구변하기 쉬운:
export NAME1="value1"
export NAME2="value2"
./my.install
편집: 이 작업은 다음 셸(내가 알고 있는)을 통해 수행할 수 있습니다.
- 스프린트
- 세게 때리다
- 켄시하
- ZTE
편집 2: my.install
로 이동하여 my.install.real
다음이라는 새 파일을 만들었습니다 my.install
.
export HOME='SAMPLE VALUE'
export PATH='SAMPLE VALUE'
./my.install.real
unset HOME
unset PATH