Linux の alias コマンドのスクリプトはどこにありますか?

Linux の alias コマンドのスクリプトはどこにありますか?

bashエイリアススクリプトに引数を追加して、実行できるようにしたい

alias -p l='ls -l'

そしてそれは私の .zshrc に永続的に追加されます。しかし、エイリアスのシェル スクリプトを見つけることができません。

試してみましたwhereis aliasが、うまくいきませんでした。man aliasエイリアスにエントリがないことも表示されます。

調べてみましたが見つかり/usr/bin, /usr/share/local/binませんでした。誰か場所を教えてもらえませんか?

編集:私はまた、すべての可能なパスを調べようとしましたls $(echo $PATH| tr ':' '\n') | grep alias

答え1

aliasは組み込みコマンドなので、どのファイルでもスクリプトとして、または関数として表示されません。コマンドはtype次のように表示されます:

$ type alias
alias is a shell builtin 

ただし、オーバーライドすることは可能です。同じ名前の関数は、builtin組み込み関数で明示的に呼び出されない限り、組み込み関数をマスクします。

したがって、次のようなものが機能するはずです。

alias() {
    if [ "$1" = "-p" ]; then
        echo "-p was given";
        shift;
    fi;
    builtin alias "$@";
}

同じエイリアスの割り当てをファイルに印刷する場合は、シェルへの入力として使用できるように、正しく引用符で囲むように注意する必要があります。

shift次のようなもの (関数内の の直後に追加) が機能する可能性がありますが、テストしてください。printf "alias %q\n" "$@" >> ~/my.alias.file

Bash と Zsh の問題に関しては、上記はどちらでも機能すると思いますが、私は Zsh の専門家ではありません。


aliasちなみに、Bash にはすでに次のような-pオプションがあることにも注意してくださいhelp alias

  Options:
    -p        print all defined aliases in a reusable format

alias引数なしのデフォルトの動作では、すべてのエイリアスを再利用可能な形式で印刷するため、これが役立つかどうかはわかりません。

答え2

コマンドaliasはスクリプトではなく、シェル組み込みコマンドである可能性が高いです。次のtypeコマンドを使用してこれを確認できます。

user@host:~$ type alias
alias is a shell builtin

組み込みに関するドキュメントを取得するには、 man ページaliasを参照してくださいbash

man bash

エイリアスを永続的にするには、通常、Bash プロファイル ファイルの 1 つ (おそらくファイル) にコマンドを追加します。~/.bashrc例:

user@host:~$ echo "alias l='ls -l'" >> ~/.bashrc

答え3

私の知る限り、zsh永続的なエイリアスはサポートされていません。

永続的なエイリアスがお好きなら、以下をチェックすることをお勧めします。http://schilytools.sourceforge.net/man/man1/bosh.1.html永続的な可用性を備えたエイリアスの実装。

他のシェルの場合、エイリアスは関連ファイル内のエイリアス コマンドとしてのみ記述できます.*shrc

答え4

私は主に bash を使用して作業しており、エイリアスは .bashrc に保存されています。

これは私のホームディレクトリの/home/myuser/.bashrcにあります。

関連情報