TIM Labs

スクリプト内からスクリプトが設置されているディレクトリを取得する

| コメント(0) | トラックバック(0)

シェルスクリプトなどで、「今自分自身が設置されているディレクトリ」を取得したいと いうことはよくある。その後の処理を全てスクリプト位置からの相対パスで行うことで、 設置位置やカレントディレクトリとの依存関係を切り離すためだ。

そんなときは、次のようにすると取得できる。それぞれ SCRIPTDIR 変数(or 定数)に結果が格納される。

sh

SCRIPTDIR=$(cd -P $(dirname $0) && pwd -P)

PHP

define('SCRIPTDIR', realpath(dirname($argv[0])));

Perl

use File::Basename;
use Cwd 'realpath';
my $SCRIPTDIR = realpath(dirname($0));

Python

import os.path
import sys
SCRIPTDIR = os.path.realpath(os.path.dirname(sys.argv[0]))

とりあえず手元で試す限りではシンボリックリンク等もそれぞれ上手く処理してくれるようだ。

一部、対話モードで起動中の場合等はそもそも関数が失敗したり、実行バイナリの位置が 取得できたり等あるようだが、まあその場合そもそも「スクリプト位置」ってなんぞ?  という話なので大目に見てもらいたい。

Windows環境では試していないが、見ての通りdirnameとrealpathを呼んでいるだけなので、 きっと上手くやってくれると思う。

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/39

コメントする

このブログ記事について

このページは、1024が2010年11月19日 14:10に書いたブログ記事です。

ひとつ前のブログ記事は「gistを使ってみよう」です。

次のブログ記事は「gitでコミットの順序を入れ替える」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。