私は以下のエイリアスがあるとします。bashエイリアスがシェル起動時の文を評価しないようにする
alias pwd_alias='echo `pwd`'
このエイリアスは「動的」ではありません。シェルが起動するとすぐにpwd
と評価されます。エイリアスの実行時まで、ティックの式の評価を遅らせるにはどうしようもありませんか?
私は以下のエイリアスがあるとします。bashエイリアスがシェル起動時の文を評価しないようにする
alias pwd_alias='echo `pwd`'
このエイリアスは「動的」ではありません。シェルが起動するとすぐにpwd
と評価されます。エイリアスの実行時まで、ティックの式の評価を遅らせるにはどうしようもありませんか?
本当に必要なのは、別名ではなく機能です。
pwd_alias() {
echo "$PWD"
}
エイリアスは、テキストを置き換えるだけです。複雑さを伴うものはすべて、関数を必要とします。
評価をシェルの開始時に変更することはできないと思います。エイリアスを作成するプロセスはシェルの起動時に実行されるため、pwd
が評価されます。単純にエイリアスを変更してpwd
をバックティックなしで実行し、pwd
出力をエコーする必要はありません。これを解決する簡単な方法は、エイリアスの使用を変更したくない場合は、パス内のエイリアスをシェルスクリプトに変更することです。
#!/bin/bash
pwd
jordanm氏によると、エイリアスはテキストを置き換える以外に何もしません。
echoの引数をbashによって展開されたpwdの出力にしたい場合は、あなたの質問を理解できません。
alias a="echo '\`pwd\`'"
ので、代わりにエコーのあなたは、独自にバッククォート展開を行い、何かを持っている場合:
あなたは、エコーの引数はバッククォートと `pwd`はなりたい場合は、それは例えば、実際に可能ですが、保管しましたランタイム、おそらくそれはあなたが望むものです。
上記は機能しません。一重引用符を削除する必要があります: 'alias a =" echo \\ 'pwd \\' "' – Anake
これは、意図したとおりに動作します。シェルを呼び出すと 'pwd'バッククォートを保持しています。 –
一重引用符はそれを行う必要があります(私のシステム上で行います)。 –
'エイリアスpwd_alias = 'エコー$ PWD'' –