会社の人に聞かれて強引な方法を提示してしまったで、
普通にできるだろってことで調べてみた。
Perl, シェルスクリプトどちらでも $0で実行ファイル名が
取得できます。それをフルパスにできればよいというわけです。
まあ basenameとか dirnameがあるんだったら abspathとかが
あるはずだって思って補完で出てくるかなって思ったんですが、
ありませんでした。basenameの manpageを見ると readlinkという
のが SEE ALSOにあります。で、これを調べてみると以下の通りで
フルパスが取得できます.
% readlink -f ファイル名
しかし説明を読むとシンボリックリンクにコマンドみたいなので
使い方があってるのかが微妙ですね。さらに調べてみると, realpath
というコマンドがあって, 絶対パスを表示させる専門みたいです.
% realpath ファイル名
両方のコマンドとも ".", ".."を考慮して除去してくれます。
なお Perlでは Cwdモジュールにある 'abs_path', 'realpath'という
関数で同じことが行えます
#!/usr/bin/perl use strict; use warnings; use Cwd qw(abs_path realpath); die "Usage abspath.pl [Filename]\n" if scalar @ARGV == 0; my $filename = shift @ARGV; print abs_path($filename), "\n"; print realpath($filename), "\n";
しかし会社の人は何にこのことを使うんだろ?そこまで
利用方法がわからないですね。得られた絶対パスからどこかを
見るとかそういうことなのかな。