![Linux の alias コマンドのスクリプトはどこにありますか?](https://rvso.com/image/134425/Linux%20%E3%81%AE%20alias%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AF%E3%81%A9%E3%81%93%E3%81%AB%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%20.png)
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にあります。