カスタムフォルダの bashrc

カスタムフォルダの bashrc

ホームフォルダを整理したかったので、ほとんどの設定ファイルを.configフォルダに移動しました。ところで、不明なファイルがまさにこの.bashrcファイルです。カスタムの場所から.bashrcをロードするようにbashをどのように指定しますか?

答え1

bashコマンド--rcfile filenameオプションを受け入れるこれは次のことを行います。

対話型シェルのファイル名(〜/ .bashrcではない)からコマンドを実行します。

したがって、実行するとbash --rcfile ~/.config/bashrcそのファイルがロードされます。

そこいいえbashrc_file変更を適用して再コンパイルするのではなく(定義を変更する - 設定オプションではありませんshell.c)、デフォルトでその場所からロードするように設定する方法です(どこで設定しますか?)。bashこのオプションで実行されるラッパーを生成することで、--rcfile他のすべての引数を変更せずに渡すことができます。これを追加してラッパーをシェルに設定し、/etc/shells慎重に実行する必要があります。 2つのオプションのうちの1つが可能ですが、正しく実行するのは簡単ではありません。

シングルユーザーシステムを使用する場合、別のオプションはすべての構成をシステム全体のファイルに保存することですが、/etc実際には問題は解決されません。システム全体のファイルがどのように実行されたかを検出し、bashその--rcfileオプションを使用して自動的に再実行することもできますが、これは他の方法よりも懸念されるようです。


私のアドバイスは、ホームディレクトリに追加のドットファイルを置くことに慣れているということです。しかし、実際にそうすることができない場合は、上記の方法がうまくいくでしょう。

答え2

Gnoucの答えに触発され、bashが同じ状況で読むことに気づきました/etc/bash.bashrc~/.bashrcしたがって、これを一番下に置くことができます/etc/bash.bashrc

 if [ -s "${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc" ]; then
    . "${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc"
 fi

その後~/.bashrc移動$XDG_CONFIG_HOME/bash/bashrc

Bashはまだロードしようとしますが、もはや~/.bashrc存在しないので問題ありません。これにより、/etc/bash.bashrc新しい場所からファイルがロードされます。

答え3

ログインシェルの場合、~/.bash_profile通常は次の行が含まれます。

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

したがって、ここで独自の構成フォルダを設定できます。

BASHRC_CONFIG_DIR=~/config/bash

if [ -f "$BASHRC_CONFIG_DIR/.bashrc" ]; then
    . "$BASHRC_CONFIG_DIR/.bashrc"
fi

非ログインシェルの場合、これは可能です/etc/bash.bashrc

関連情報