2009-03-19 8 views
5

ローカルのUNIXサーバボックスに接続している間に実行ファイルを実行しています。現在のプロセス/実行可能ファイルが実行されている場所からパスを見つける方法は?

私は実行可能ファイル 'abc'を実行しようとしています。今、サーバーは 'abc'のエイリアスを提供している可能性があります。どうすればこのパスを知ることができますか?私が 'abc'を呼び出すと、実際には/ opt/corp/xyz/abcから実行されるかもしれません。実行可能ファイルを呼び出すパスを知る方法は? D

答えて

10

"which abc" あなたは別名

おそらく「エコーを一覧表示する

または "alias" を呼び出すことになるabc表示する:私は、HP-UX上で実行しているよところで

$ 0 "をスクリプトの中から探し出すか、argv [0]を他の方法で検索します。

2

HP-UXには "which"コマンドがありますか?実行:あなたはそれを持っている場合は

which abc 

を、whichコマンドは、プログラムがあなたの$PATHから実行するABCを教えてくれます。

4

あなたがPATH環境変数を使用して実行している場合は、試みることができる:

$ which abc

やコマンドのシンボリックリンクがある場合

$ whereis abc

とは、あなたが知りたいです」実際の "ターゲットのようなものを使用することができます:

私は今、私の目の前にHP-UXシステムへのアクセス権を持っていないが、これは動作するはずです:

$ ls -l /opt/local/bin/wish 
lrwxr-xr-x 1 root admin 22 Feb 3 21:56 /opt/local/bin/[email protected] -> /opt/local/bin/wish8.5 
$ readlink /opt/local/bin/wish 
/opt/local/bin/wish8.5 

コマンドは、エイリアスに基づいている場合、次のようにエイリアス定義を明らかにします。

 
$ alias abc 

システムがどのように構成されているかによって、上記のコマンドは複数のバリエーションの質問に回答する必要があります。

Perlで

:パイソンから

$running_script = $0; 

、コマンドライン端末からSO How to get filename of the __main__ module in Python?

1

を参照してください。

$ abcの

は/ opt /コープ/ XYZ/ABC

2

ありがとうございます! 「これは私が後にしていた命令だった!私はすでに(Ubuntuで)コマンドを知っていたので、私は今自分自身に顔を揃えています。 そして、それはHP-UXの魅力のように機能します!

EDIT:popcntによって提案された 'whereis'がさらに適切です! 高尚な男!

+0

、それを先に行くと1、および満足した場合、あなたは可能性あなたの質問に対する回答としてマークしてください。それは元々のポスターからの "答え"ではなく、あなたがここで見ているものです。 – popcnt

1

Unix上のスクリプトのパスを取得するための正しい方法は次のとおりです。

dir=$(cd $(dirname "$0"); pwd) 

背景:$ 0は、現在のディレクトリへのスクリプトの相対ファイル名+パスです。絶対値(/...)または相対値(../,dir/...)にすることができます。したがって、$(dirname "$0")は、パス名(ファイル名なし)を返します。引用符を気にする。 "$ 0"にはスペースや奇妙なものが含まれています。

次に、そのディレクトリにcdを入力して、pwdが最終パスの絶対パスを返します。

作品kshbashです。

Cプログラムでは、をチェックする必要があります。シェルが完全なパスをそこに置くかどうかはわかりません。あなたは問題がある場合は、私は環境を整え小さなスクリプトで実行可能ファイルをラップし、その後で、あなたの実行ファイルを起動することをお勧め:あなたは私を好きなら

exec "$dir/"exe "[email protected]" 
関連する問題