ホームフォルダを整理したかったので、ほとんどの設定ファイルを.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
。