Java/Grails/Maven 버전을 변경해야 하는 몇 가지 프로젝트가 있습니다. 변경할 수 있는 일부 스크립트를 사용하여 이 문제를 처리하려고 합니다. 예를 들어:
#!/bin/sh
export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22
export PATH=$JAVA_HOME/bin:$PATH
export GRAILS_HOME=/cygdrive/c/dev/grails-1.0.3
export PATH=$GRAILS_HOME/bin:$PATH
export MAVEN_HOME=/cygdrive/c/dev/apache-maven-2.0.11
export PATH=$MAVEN_HOME/bin:$PATH
which java
which grails
which mvn
실행되면 스크립트 컨텍스트에서 PATH가 성공적으로 변경되지만 변경 내용이 완료되지 않은 채 스크립트가 종료됩니다.
현재 사용 중인 셸의 PATH를 변경하는 스크립트를 어떻게 실행합니까?
저는 시그윈을 사용하고 있습니다.
답변1
새 쉘을 생성하려면 source
또는 를 사용해야 합니다 .eval
새로운 쉘 스크립트를 실행할 때어린이쉘이 생성되었습니다. 이것어린이쉘은 스크립트 명령을 실행합니다. 이것아버지쉘 환경은 어떤 일이 일어나도 영향을 받지 않습니다.어린이껍데기.
이 상황을 처리할 수 있는 다양한 기술이 있습니다.
파일을 준비하다소스 파일
source
현재 셸의 명령 목록을 포함합니다.export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22 export PATH=$JAVA_HOME/bin:$PATH
그런 다음 소스를 얻으십시오.
source sourcefile
처음에는 샤방이 필요하지 않습니다.소스 파일, 하지만 그것으로 작동합니다.
스크립트 준비평가 파일.sh환경을 설정하는 명령을 인쇄합니다.
#!/bin/sh echo "export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22" echo "export PATH=$JAVA_HOME/bin:$PATH"
그런 다음
eval
평가해 보세요.eval `evalfile.sh`
새 셸을 구성하고 실행합니다.
#!/bin/sh export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22 export PATH=$JAVA_HOME/bin:$PATH exec /bin/bash
이 쉘에 입력 하면
exit
다음으로 돌아갑니다.아버지하나.다음에 별칭을 추가하세요
~/.bashrc
.alias prepare_environ='export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22; export PATH=$JAVA_HOME/bin:$PATH;'
필요할 때 전화하세요.
prepare_environ
답변2
다음을 사용하여 이 작업을 수행할 수 있습니다.원천내장:
. script_name
일부 쉘은 다음과 같은 별칭을 제공합니다.원천:
source script_name