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