34

次のエイリアスがあるとします。

alias pwd_alias='echo `pwd`'

このエイリアスは「動的」ではありません。pwdシェルが起動するとすぐに評価されます。エイリアスの実行時までティックで式の評価を遅らせる方法はありますか?

4

3 に答える 3

41

本当に必要なのは、エイリアスではなく関数です。

pwd_alias() {
   echo "$PWD"
}

エイリアスはテキストを置き換えるだけです。複雑なものはすべて機能を必要とします。

于 2012-11-06T23:43:27.153 に答える
4

jordanm が言ったように、エイリアスはテキストを置き換えるだけです。
echo の引数を bash によって展開された pwd の出力にしたい場合、私はあなたの質問を理解できません。
逆引用符を保持した状態で echo の引数を「pwd」にしたい場合は、実際に可能です。たとえば、次のようになります。

alias a="echo '\`pwd\`'"

したがって、エコーの代わりに、独自のランタイムでバッククォート展開を行うものがある場合は、おそらくそれが必要です。

于 2012-12-19T07:28:42.123 に答える
0

シェルの開始時に評価が行われないように変更できるとは思いません。エイリアスを作成するプロセスはシェルの開始時に実行されるため、pwdその後評価されます。pwdバックティックなしで実行するようにエイリアスを変更するだけでpwd、エコーする必要はありません。これを解決する簡単な方法は、エイリアスの使用を変更したくない場合、パスでエイリアスの使用からシェル スクリプトに変更することです。

#!/bin/bash
pwd
于 2012-11-06T23:27:03.560 に答える