3

Firefox アドオン sdkを試してsourceいます。そのためには、sdk のディレクトリに移動してから を実行する必要があります。そのディレクトリにアクセスせず、現在のパスから直接ソースを取得すると、次のことが起こります。cdsource bin/activatecd

$ source ~/src/devtools/addon-sdk/bin/activate
アドオン SDK へようこそ。サポートが必要な場合は、「cfx docs」を実行してください。
$ cfx
-bash: cfx: コマンドが見つかりません

そのためのエイリアスが必要です。これは、sdk に cd し、それをソースしてから、現在のディレクトリに戻ります。

alias acfx='cd ~/src/devtools/addon-sdk && source bin/activate && cd "$(dirname "$0")"'

これはsdkを正しくソースしますが、悲しいことに、エイリアスを呼び出したディレクトリに戻りません。

$ acfx
アドオン SDK へようこそ。サポートが必要な場合は、「cfx docs」を実行してください。
dirname: 無効なオプション -- b
使用法: dirname パス

ここで迷ってしまいました。元のディレクトリに戻るにはどうすればよいですか? または、「作業ディレクトリ」を指定しますsourceか?

4

4 に答える 4

5

次のように、サブシェルで cd とそれに続くコマンドを実行できます。

(cd ~/src/devtools/addon-sdk && source bin/activate)

何らかの理由でサブシェルを作成したくない場合は、 を使用cd -して dir を以前の dir に変更します。

cd ~/src/devtools/addon-sdk && source bin/activate && cd -
于 2013-04-08T11:09:17.953 に答える
1

pushdおよびpopdシェル組み込みを使用できます。

alias acfx='pushd ~/src/devtools/addon-sdk && source bin/activate && popd'

この$(dirname "$0")トリックは、スクリプトから呼び出された場合にのみ機能します。プロンプトで、$0になるのでbash、に戻ろうとします.dirname bash印刷されるため.)。あなたの場合、$0何か違うと思います。たぶん-bash

于 2013-04-08T11:06:55.903 に答える