BROWSER変数にパラメータを入れるには?

BROWSER変数にパラメータを入れるには?

私はそうすることができるのが好きですexport BROWSER="lynx -cfg=~/.lynx.cfg"。自分で試して、エイリアス設定も試しましたが、alias lynx="lynx -cfg=~/.lynx.cfg"何も機能しませんでした。 (この変数を使用してブラウザを起動するツールは、まだ私のプロフィールを無視したり、ブラウザをまったく起動しないという意味です。)

ベストアンサー1

$BROWSER多くのユーティリティであなたのWebブラウザを選択すると考えています。

ユーティリティによっては、以下が含まれると予想されます。

  1. 実行可能ファイルのパスまたは名前
  2. 最初の単語はパスまたは名前で、他の単語は初期引数のリストである単語のリストです。運が良ければ、シェルが行うのと同様の引用の形式を理解することができます。
  3. (非常に可能性が低く賢明ではありません)シェルコマンドラインの始まりです。

最初の状況にある場合は、使用しようとしているユーティリティが存在しない"lynx -cfg=~/.lynx.cfg"コマンドについて文句を言うと予想されます。

~3番目のケースでは、シェルが-cfg=~/.lynx.cfgzshこれは、このオプションが有効な場合にのみ実行されます。 a は a の左側の内容が有効な変数名のように見え、POSIX モードでない場合にのみ拡張されます。magicequalsubstbash~==

しかしlynx、(私のシステムのバージョン2.8.9dev.16以降)は、それ~自体をホームディレクトリとして理解しているようです。

$ BROWSER='echo -cfg=~' sensible-browser foo
-cfg=~ foo

したがって、あなたのブラウザは第四カテゴリは、最初の単語を除くすべてを無視するか、ブラウザにその意味を尋ねるメッセージを表示します。あるいは、あなたのバージョンは「ホーム」が何を意味するのかlynx理解していません。~

ユーティリティを実行して、strace -fe execve the-utility実行する操作を確認します。

お客様のバージョンが製品ファミリーと見なされlynxない場合は、次のように定義できます。~$BROWSER

export BROWSER="lynx -cfg=$HOME/.lynx.cfg"

$HOMEスペースや引用符(または他のシェル関連文字)がないと仮定)

$BROWSERとにかく、次のように正しいパラメータをに渡すスクリプトを定義できる必要がありますlynx

#! /bin/sh -
exec lynx -cfg="$HOME/.lynx.cfg" "$@"

そしてそれをあなたの$BROWSER

ちなみに、$HOMEキャラクターで始まるとばかばかしいことになります。だから、これらのキャラクターを個別に扱うのは良い考えではありません。~lynxlynx~

おすすめ記事