私は他のコマンドの実行をラップするためにラッパースクリプトを書いています。この場合はChefkitchen
コマンドです。 bashで実行すると、ラッパースクリプトが実行されるように私のスクリプトも呼び出され、kitchen
事前に配置されます。$PATH
kitchen
問題は元のバージョンを呼び出す方法ですkitchen
。もちろん、最も確実な方法は、フルパスを提供することです。/usr/bin/kitchen
スクリプトにパスを入力するだけですが、他の人が別のパスにインストールすることもできます。もちろん、これは他のラッパースクリプトを除外します。ソリューションがスタック可能であれば良いでしょう。
私は同じトピックを扱う2つのアプローチを考えました。
- スクリプトで
$PATH
各エントリを比較し、デバイス番号とinode番号を$(dirname "$0")
使用して同じディレクトリであることを確認します。stat
その場合はそれを削除してください$PATH
。その後、kitchen
ラッパースクリプトを再度呼び出すべきではないので、呼び出すことができます。 - #1に似ていますが、
$PATH
スクリプトで手動で検索し、stat
各結果にvs.を使用します$0
。自分が見つかるまでスキップして探し、次の項目を使用します。私たちが自分自身を見つけることができない場合は、正常に実行します(ラッパーは含まれていませんが、そのパスを指定して$PATH
実行された場合を処理するため)。
もっと良い方法がありますか?それとも、これを行うコードは、一般的なDebianまたはUbuntu Linuxシステムにすでに存在していますか?
ベストアンサー1
私は過去に似たようなことを何度もやったことがcommand kitchen
ありmy-kitchen
ました。
alias kitchen=/path/to/my-kitchen
しかし、これがあなたのユースケースに適しているかどうかはわかりません。