쉘 스크립트에서 PATH를 변경하는 방법은 무엇입니까?

쉘 스크립트에서 PATH를 변경하는 방법은 무엇입니까?

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

새로운 쉘 스크립트를 실행할 때어린이쉘이 생성되었습니다. 이것어린이쉘은 스크립트 명령을 실행합니다. 이것아버지쉘 환경은 어떤 일이 일어나도 영향을 받지 않습니다.어린이껍데기.

이 상황을 처리할 수 있는 다양한 기술이 있습니다.

  1. 파일을 준비하다소스 파일source현재 셸의 명령 목록을 포함합니다.

    export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22
    export PATH=$JAVA_HOME/bin:$PATH
    

    그런 다음 소스를 얻으십시오.

    source sourcefile
    

    처음에는 샤방이 필요하지 않습니다.소스 파일, 하지만 그것으로 작동합니다.

  2. 스크립트 준비평가 파일.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`
    
  3. 새 셸을 구성하고 실행합니다.

    #!/bin/sh
    export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22
    export PATH=$JAVA_HOME/bin:$PATH
    
    exec /bin/bash
    

    이 쉘에 입력 하면 exit다음으로 돌아갑니다.아버지하나.

  4. 다음에 별칭을 추가하세요 ~/.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

관련 정보