「エイリアス」のようないくつかのbashコマンドで空白が許可されないのはなぜですか? [閉鎖]

「エイリアス」のようないくつかのbashコマンドで空白が許可されないのはなぜですか? [閉鎖]

等号の横にスペースがあると、bashのaliasコマンドが機能しないことがわかります。例えば、

alias loadcode='vim *.c *.h Makefile'

有効ですが

alias loadcode ='vim *.c *.h Makefile'

または

alias loadcode= 'vim *.c *.h Makefile'

または

alias loadcode = 'vim *.c *.h Makefile'

動作しません。なぜこれですか?

答え1

aliasこれは、別名を照会し、一度に複数の別名を設定するために使用できるためです。

$ alias foo                       # query for one alias
bash: alias: foo: not found

$ alias foo = bar                 # query for three aliaes
bash: alias: foo: not found
bash: alias: =: not found
bash: alias: bar: not found

$ alias foo=bar doo=dar           # set two aliases
$ alias doo                       # query one alias
alias doo='dar'

$ alias foo = bar                 # query three, again
alias foo='bar'
bash: alias: =: not found
bash: alias: bar: not found

(エイリアスの名前が間違っているのではなく、エイリアスが見つからないと表示される=理由を尋ねないでください。

もちろん、これはシェル変数の割り当ての空白がどのように機能するかと一致します。

$ foo=bar doo=dar
$ echo "$doo"
dar

答え2

スペースはいコマンドライン引数を分離する一般的なbash操作を実行できます。

特に薬alias...

aliasその中に含まれない引数が与えられると、エイリアスは=その名前の既存のエイリアスを印刷しようとします。

ただし、aliasここにパラメータを指定する=と、新しいエイリアスが生成されます。

衝動を感じたら、印刷と定義を1行にまとめることができます。

関連情報