Debian 10 での「エイリアス」のグローバル使用

Debian 10 での「エイリアス」のグローバル使用

Debian 10 インスタンスでエイリアスのグローバル使用を追加しようとしましたが、うまくいきませんでした。

私がすでに試みたことは、エイリアスを /etc/bash.bashrc に追加することと、このスニペットを /etc/profile に追加してソースを取得することですが、動作しません。

if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi

私のbash.bashrcでは:

#Aliases 
alias l='ls -la' 
alias ll='ls -l' 
alias la='ls -a'

編集*

「ls」のエイリアスを作成するにはどうすればいいですか。たとえば、ls='ls -CF' です。これをエイリアスとして使用すると機能しません。

答え1

Debian は /etc/bash.bashrc で動作するはずです。/etc/passwdユーザーが bash シェルを使用していることを確認してください。

user1:x:1000:1000:User 1:/home/user1:/bin/bash
user2:x:1001:1001:User 2:/home/user2:/bin/zsh

デフォルトでは、useradd または adduser を使用してユーザーを追加すると、シェルとして bash が作成されますが、これは他のシェルに変更されている可能性があります (zsh は非常に人気があります)。上記のサンプルでは、​​user1 は bash シェルを使用し、user2 は zsh を使用しています。user2 はログイン時に /etc/bash.bashrc を実行しません。

答え2

私の を見ると、がすでに として定義されていることが~/.bashrcわかります。lsalias ls='ls --color=auto'

asに新しいlsエイリアス定義を追加しても役に立ちません。これは、 の定義が上書きされていると推測されるからです。/etc/bash.bashrcalias ls='ls -CF'~/.bashrc

ls私のテストでは、有効なで定義されているエイリアスを、~/.bashrcグローバル定義用に追加されたエイリアスにコメントアウトすると、etc/bash.bashrc機能するようになりました。

これは、グローバル エイリアスを組み込むことを可能にする Red Hat のグローバル エイリアスの処理方法とはかなり異なります/etc/profile.d/[filename].shが、Debian と Red Hat の設定方法の違いと、プロファイル ファイルと bashrc ファイルの関係により、これは Debian のオプションではないようです。

つまり、Red Hatでは、profile/bashrcファイルをsourceで処理して、さまざまなシェル/ログインタイプで機能するようにします(ここで説明されているようにhttps://unix.stackexchange.com/questions/170493/login-non-login-and-interactive-non-interactive-shellsただし、Debian の場合、ファイルは/etc/profile.d/*.shログイン シェルにのみソースされているようです。ただし、ここでの以前の回答は削除されたため、編集して明確にすることができませんでした。

Debian の場合、グローバル エイリアスがログイン シェルでのみ機能することに問題がなければ、たとえば/etc/profile.d/aliases.shにエイリアスを追加します。そうでない場合は、 に追加する必要があるようです/etc/bash.bashrc。 のエイリアスが優先されることに留意してください~/.bashrc。定義したエイリアスが機能しない場合は、そのエイリアスが他の場所で定義されていて、自分の定義を上書きしている可能性があります。

関連情報