Bashエイリアスの置き換え(デフォルトではエイリアスのように機能しますが、エイリアスではありません)

Bashエイリアスの置き換え(デフォルトではエイリアスのように機能しますが、エイリアスではありません)

Bashエイリアスの置換が必要です(デフォルトではエイリアスのように機能しますが、エイリアスではありません)。

このような置換が必要なのは、スクリプトがエイリアスを使用できないためです。つまり、Bashでエイリアスを手動で実行すると正常に動作しますが、スクリプトの一部として実行すると機能しません。私が知っている解決策は、エイリアスを一時ファイルに入れることですが、このアプローチは望ましくありません。

エイリアスのように動作しますが(ファイルをインポートした後)、スクリプトに自然にアクセスできる「次世代エイリアス」(推論するため)など、私が利用できる代替/類似コマンドのショートカットはありますか?

ベストアンサー1

存在するman bash

シェルが非対話型の場合、エイリアスは以下を除いて拡張されません。拡張エイリアスシェルオプション設定の使用Shoput

shopt expand_aliasesだから私はスクリプトに追加する必要があると思いますbash

テスト:

$ cat 1.sh 
#!/bin/bash
alias ll='ls -l'
ll $HOME

$ ./1.sh 
./1.sh: line 3: ll: command not found

$ cat 2.sh 
#!/bin/bash
shopt -s expand_aliases
alias ll='ls -l'
ll $HOME

$ ./2.sh 
total 12
...

おすすめ記事