.xsessionrcでは動作しますが、コマンドラインでは動作しないbashテストに関する問題

.xsessionrcでは動作しますが、コマンドラインでは動作しないbashテストに関する問題

私は明らかに単純なrtfm問題のように見えるものを解決することはできません。この行はコマンドライン(zshとbash)でうまく機能します。

[[ -f ${HOME}/.xsessionrc.local ]] && . ${HOME}/.xsessionrc.local

私は.xsessionrc(bashで修正)に入れるとそうではありません。

二重角括弧が機能しなければならないと誤解しましたか?私が言ったように、それらはbashコマンドラインで実行されます。

両方の行が機能します(コメント解除時): -

最初から明確に動作するために必要ではなく、他の形式のいずれかを使用できますが、「スクリプトでは」動作しませんが、コマンドラインで直接使用するときはなぜ動作しますか? XSessionが.xsessionrcを取得する方法にはいくつかの違いがありますか?

  # F=${HOME}/.xsessionrc.local;[ -f $F ] && . $F
  # [ -f ~/.xsessionrc.local ] && .  ${HOME}/.xsessionrc.local

ご了承いただきありがとうございます。私は今それに目が遠かった。私はこれに数時間を費やしました;)

ベストアンサー1

使用

[ -f "$HOME/.xsessionrc.local" ] && . "$HOME/.xsessionrc.local"

つまり、単一の角かっこを使用し、ファイルのパス名を参照します。

bash二重角かっこは(および他の)シェルの非標準テスト構文です。実際にbashファイルを読んでいるかどうかはわかりません。/bin/shテストに使用される二重角かっこ構文を理解できない可能性があります。

また見なさい:

おすすめ記事