2011-02-10 13 views
46

私はシステム上の別のファイルに存在することを望む.bashrcで実行したいものがいくつかあります。このファイルを.bashrcに含めるにはどうしたらいいですか?.bashrcに追加ファイルを含める

答えて

79

他のファイルを含める.bashrcsource /whatever/file(または. /whatever/file)を追加します。

+16

あなたは優雅に非存在を処理する必要があります。例えば、存在を確認する(test -r path &&。path)か、エラーを無視する(。path 2>/dev/null) –

+1

@William Pursell IMO 99.99%が一度も起こらない場合。 – Daniel

+3

@ダニエル私は同意しない。 .01%の時間は、毎秒何千回も発生する可能性があります。 NFSマウントされた$ HOMEに.bashrcを置くと、.bashrc_aliasesの末尾にある.01% –

28

エラーを防ぐには、まずファイルが存在することを確認する必要があります。次に、ファイルをソースします。このようなことをしてください。

+3

よりもはるかに高いファイル取得の失敗率を意味することになります。私が使用しているファイルは echo "エイリアスが読み込まれました" – Nick

+1

私は自分自身に考えました: "〜は$ HOMEですよね?"ああ、 '[-f〜/ .bashrc_aliases];が動作しない場合 – modle13

2

読み込みたいファイルが複数ある場合、存在するかどうかはわかりませんが、forループを使用するといくらか優雅に保つことができます。

files=(somefile1 somefile2) 
path="$HOME/path/to/dir/containing/files/" 
for file in ${files[@]} 
do 
    file_to_load=$path$file 
    if [ -f "$file_to_load" ]; 
    then 
     . $file_to_load 
     echo "loaded $file_to_load" 
    fi 
done 

出力は次のようになります。

$ . ~/.bashrc 
loaded $HOME/path/to/dir/containing/files/somefile1 
loaded $HOME/path/to/dir/containing/files/somefile2 
+0

ループ内でファイルの存在を再度確認する必要はありませんか? (ディスク上にファイルの非常に動的なリストがない限り) –

+0

ファイルの存在チェックは1つだけです。現在の作業環境にリストに記載されているファイルがない場合、そのファイルのロードにエラーが発生し、視覚的なノイズが発生します。より理想的なアプローチは、静的リストを定義するのではなく、ファイルのリストを取得し、それをループすることです。 – modle13

0

私は、最初のバージョンを確認し、パスの設定のための変数を割り当てることを好む:

if [ -n "${BASH_VERSION}" ]; then 
    filepath="${HOME}/ls_colors/monokai.sh" 
    if [ -f "$filepath" ]; then 
    source "$filepath" 
    fi 
fi 
関連する問題