エイリアスがあり、それをコマンドラインに入力すると、エイリアスは無視され、-iフラグを持たない通常のrmコマンドが呼び出されることがrm='/bin/rm -i'
わかりますが、なぜこれが起こるのか理解できません。"rm" filename
私はそれがなぜ機能するのか理解していません"rm"
。
文字を二重引用符(''')で囲むと、履歴拡張が有効になっている場合は、'$'、'''、'\'、および'!'を除く引用符内のすべての文字のリテラル値が保持されます。 - [gnu。 org ][ 1]
...しかし何とか動作します。私のエイリアスを無視します。どのように動作しますか?
また、組織の Korn シェルスクリプトでこれらのエイリアスを無視するコマンド呼び出しを表示する場合もあります。しかし、それは不要なことでしょうか? Kornシェルスクリプトはシェルレベル名にアクセスできないので?
[1]:https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html#:~:text=Enleading%20characters%20in%20double%20quotes,POSIX%20Mode)%2C%20%20%27%20!
答え1
これは非常に具体的なケースです。参考
https://www.gnu.org/software/bash/manual/bash.html#Aliases
すべての簡単なコマンドの最初の単語は引用なし、エイリアスがあることを確認してください。その場合、その単語はエイリアスのテキストに置き換えられます。
このマニュアルのこのセクションでは、エイリアスのいくつかの混乱した側面を指摘し、次に終了します。
ほとんどすべての目的で、シェル関数はエイリアスより優れています。