yuu_nkjm blog


2011-02-05(Sat) [長年日記]

[bash][Linux][Java] シェルスクリプトの設置場所に移動してからのコマンド実行

状況

"/home/hoge/deep/path/project/sh/"という位置にJavaプロジェクトの起動スクリプトを置きたい.Javaのクラスパスの関係から,"/home/hoge/deep/path/project/"でjavaコマンドを発行したい.

スクリプト

起動スクリプトとしてboot.shを作成し,"/home/hoge/deep/path/project/sh/"に設置する.

シェルスクリプトの$0という環境変数には,スクリプトの相対パス付ファイル名が入っている.dirnameコマンドを使って,そこからファイル名を取り除いている.

以下では,全てを絶対パスに変換してから渡しているが,Javaに渡す引数は絶対パスではなく,javaコマンドを実行するパスからの相対パスにした方が良いかもしれない.

#!/bin/bash
SCRIPT_CALLED_DIR=`pwd`
echo   This script is called from  ${SCRIPT_CALLED_DIR}
SCRIPT_LOCATED_DIR=${SCRIPT_CALLED_DIR}/`dirname $0`
echo   This script is located at  ${SCRIPT_LOCATED_DIR}
cd ${SCRIPT_LOCATED_DIR}
echo   Move to script dir  ${SCRIPT_LOCATED_DIR}
cd ../
PROJECT_DIR=`pwd`
echo   Move to Project dir  ${PROJECT_DIR}
`java -cp bin:jar/log4j-1.2.15.jar info.nkjm.yuu.Hoge`

実行結果

どこからboot.shを実行しても,javaコマンドを実行したい"/home/hoge/deep/path/project/"に移動できている.

[hoge@info /home/hoge]$ deep/path/project/sh/boot.sh
  This script is called from  /home/nkjm
  This script is located at  /home/hoge/deep/path/project/sh
  Move to script dir  /home/hoge/deep/path/project/sh
  Move to Project dir  /home/hoge/deep/path/project
[hoge@info /home/hoge/deep/path]$ project/sh/boot.sh
  This script is called from  /home/hoge/deep/path
  This script is located at  /home/hoge/deep/path/project/sh
  Move to script dir  /home/hoge/deep/path/project/sh
  Move to Project dir  /home/hoge/deep/path/project

関連ページ

本日のリンク元
その他のリンク元
検索

トップ «前の日記(2011-01-18(Tue)) 最新 次の日記(2011-02-06(Sun))» 月表示 編集 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|