私の端末のエイリアスはどこから来ましたか?

私の端末のエイリアスはどこから来ましたか?

Windowsでbash端末(git-bash)を実行して実行するたびに、alias次のエイリアスを取得します。

$ alias
alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
alias ltsc='$(npm bin)/tsc'
alias lwbc='$(npm bin)/webpack'
alias node='winpty node.exe'

私のものには.bashrc次のものがあります。

alias lwbc="\$(npm bin)/webpack"
alias ltsc="\$(npm bin)/tsc"

私のものには.bash_profile次のものがあります。

test -f ~/.profile && . ~/.profile
test -f ~/.bashrc && . ~/.bashrc

.profileファイルがありません。

それでは、これらはどこから来ますか?

alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
alias node='winpty node.exe'

修正する:

これらの別名がから来ていることがわかりました/etc/profile.d/aliases.sh。さて、このファイルがどこでトリガされるのかどうかはどうすればわかりますか?

答え1

以下はbash文書から抜粋したものです。

bashがこのオプションを使用して対話型ログインシェルまたは非対話型シェルとして呼び出されると、まず--loginファイル/etc/profile(ファイルが存在する場合)からコマンドを読み取り、実行します。ファイルを読み込んだ後~/.bash_profile~/.bash_login、 を順に探して存在~/.profileし、読み取れる最初のファイルからコマンドを読み込み実行します。--noprofileこのオプションを使用すると、シェルの起動時にこの動作を無効にできます。

ホームディレクトリの内容を確認したので、質問に対する回答はファイルにある可能性が高いです.bashrc。一部のディストリビューションでは、エイリアスを含むすべてのユーザーにデフォルト値を設定します。そうでない場合、この構成は上記の抜粋に記載されている他のファイルのいずれかに存在する可能性があります。.bash_profile/etc/profile

答え2

起動時に実行されるコマンドのトレースを印刷するようにbashに要求します。

bash -x

トレースには実行されたコマンドのみが表示され、そのコマンドがどのファイルから来たかは表示されません。しかし、それらはbashが読んでいるファイルから出なければなりません。最初に/etc/bash.bashrc(システムで有効になっている場合)、~/.bashrcコマンドから出てくる、または.使用sourceされている場合は、トレースに表示される他のファイルからインポートする必要があります。

一般の実行時にエイリアスが表示されないbash場合ログインシェル、間違った場所に定義されているため、~/.bashrc現在ロードされている場所を調べるには、トレースが有効なbashのログインインスタンスを実行します。bash -l -x

答え3

私はSUSEを使用しており、このディストリビューションの場合、これらのエイリアスはにあります/etc/bash.bashrc。 csh または tcsh を使用する場合、/etc/csh.cshrcこれは Linux ディストリビューションに固有のものであるため、変更しないことをお勧めします。代わりに管理者権限で作成して編集する/etc/bash.bashrc.localと、ファイルの下部で/etc/bash.bashrc操作を実行しtest -s /etc/bash.bashrc.local、ファイルが存在する場合は実行されることを確認できます。

私もそのlsエイリアスが嫌いです。私はalias ls='ls $LS_OPTIONS'長年コメントしました/etc/bash.bashrc。システムにパッチを適用してカーネルアップデートを実行すると、この/etc/bash.bashrcファイルが上書きされる可能性があるため、戻って再編集する必要があります。

使っていると言われました。Windowsのbash端末(git-bash)/etc/bash.bashrcそれで、それがあなたに特に適しているかどうかはわかりません。

関連情報