inputrcのif文

inputrcのif文

私はbashrcの中央位置を使用し、次のようにすべてのユーザーにソースコードを提供しています。

GLOBAL_BASHRC="/path/to/global/bashrc"

if [ -r "$GLOBAL_BASHRC" -a -f "$GLOBAL_BASHRC" ]; then
    # Load the bashrc
    source $GLOBAL_BASHRC
else
    echo "Warning: Bashrc file [${GLOBAL_BASHRC}] does not exist!"
fi

それでは、inputrcファイルで同じことをしたいと思います。 inputrcのソースコードと同じことをする方法を見つけました。この問題:

$include /path/to/global/inputrc

しかし、問題は、上記のbashrcのようにエラー処理が必要で、ファイルが実際に存在する場合にのみロードしたいということです。だから私の質問は、私のinputrcにファイルがあるかどうかを確認するためにifステートメントをどのように指定しますか?

答え1

いつでも可能なので、inputrcファイル$includeから読む必要はありません。~/.inputrc

bind -f /path/to/global/inputrc

したがって、代わりにいつも使用していたif [ -r file ]thisを使用してくださいsource


のマニュアルページは、インタラクティブログインシェルの場合、および/etc/profile 最初に読んで検索することを示しています。他の対話型シェルの場合は を読み取り、非対話型シェルの場合はファイルがあればそのファイルを読み取ります。~/.bash_profile~/.bash_login~/.profile~/.bashrc$BASH_ENV

あなたの場合は、ターミナルエミュレータの非ログインインタラクティブシェルを使用しているので、読むことができます~/.bashrcstraceたとえば、仮想ホームを使用して何が起こっているのかを確認できます/tmp

$ touch /tmp/.inputrc /tmp/.bashrc
$ (unset BASH_ENV INPUTRC HISTFILE
   HOME=/tmp strace -e open -o /tmp/out bash -i)

これは、次のファイルが開いていることを示しています(簡潔にするためにいくつかのファイルを削除しました)。

open("/tmp/.bashrc", O_RDONLY)          = 3
open("/tmp/.bash_history", O_RDONLY)    = -1 ENOENT
open("/tmp/.inputrc", O_RDONLY)         = 3
open("/tmp/.bash_history", O_WRONLY|O_CREAT|O_TRUNC, 0600) = 3

.inputrcしたがって、bashは.bashrc。これはINPUTRCファイルに設定する時間を与えるので意味があります。

答え2

ファイルでこれを行う代わりに.inputrc(私が知っている限りファイルが実際に存在するかどうかを確認する方法はありません)、環境変数を設定できます。INPUTRC.bashrc

if [ -r "$GLOBAL_BASHRC" -a -f "$GLOBAL_BASHRC" ]; then
    # Load the bashrc
    source $GLOBAL_BASHRC
    if [ -f /path/to/global/inputrc ]; then
        export INPUTRC="/path/to/global/inputrc"
    fi
else
    echo "Warning: Bashrc file [${GLOBAL_BASHRC}] does not exist!"
fi

この変数はマニュアルINPUTRCに文書化されています(マニュアルにも文書化されています)。readlinebash

関連情報