環境変数を使用して単一のコマンドのデフォルト変数を設定するにはどうすればよいでしょうか?

環境変数を使用して単一のコマンドのデフォルト変数を設定するにはどうすればよいでしょうか?

単一プロセスのデフォルト ブラウザをオーバーライドする必要があります。このプロセスは npm スクリプトから手動で開始されます。これをプログラムで実現するために、BROWSERスクリプトの直前に環境変数をオーバーライドすることにしました。しかし、うまくいきません。システム全体のデフォルト ブラウザが開きます。 を試してみましたxdg-openが、これもうまくいきません。

簡単に言うと、次のコマンドで、デフォルトのブラウザではなく、指定されたブラウザで指定された URL を開きたいのです。

BROWSER='path to desired browser' xdg-open 'any url'

PS: 私の問題についてもう少し説明します。私はすべてのマシンで Firefox をデフォルトのブラウザとして使用しており、かなり慣れています。しかし最近、ある Web アプリケーションをデバッグしているときに、Firefox 開発ツールで一部のブレークポイントが使用されていないことに気付きました。Chromium をインストールしたところ、そのデバッガは期待どおりに動作しました。開発には storybook を使用していますが、日常的な使用では Firefox をデフォルトの変数として使用しながら、Chromium で開きたいと思っています。

答え1

私は、間違ったブラウザ プロファイルを頻繁に使用するため$BROWSER、を尊重する状況に限定されない同様のものが必要でした。xdg-open

次のコンポーネントを使用した回避策を次に示します。

  • BROWSER変数を読み込み、適切なブラウザを起動するスクリプト。
  • 現在のデフォルト.desktopプロファイルをディレクトリにコピーして上書きします~/.local/share/applications
  • カスタム スクリプトを使用するには、ファイルExec内のステートメントを変更します。.desktop
  • BROWSERフォールバックするには、ログイン シェルで変数を適切なデフォルトに設定します。

ステップバイステップ

次のようなスクリプトを~/binディレクトリに追加しましたcustom-browser:

$BROWSER "$@"

次に、現在の.desktopプロファイルを次のように見つけます。

xdg-settings get default-web-browser

すると が得られたのでfirefox.desktop、それをユーザーのホーム ディレクトリにコピーしました。

cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop

Execのステートメントを に変更して~/.local/share/applications/firefox.desktop起動しました/home/{user}/bin/custom-browser

今、私は以下を使うことができます:

BROWSER='chromium' xdg-open 'https://startpage.com'
BROWSER='firefox' xdg-open 'https://startpage.com'

変数に基づいて異なるブラウザを開きますBROWSER。これが何らかの形で役立つことを願っています。

私の使い方

私が使うdirenv[1]BROWSERディレクトリに基づいて変数を設定するには、たとえば、作業ディレクトリではブラウザに作業プロファイルを使用します。

もう 1 つは、アプリを起動してBROWSER=hardened-firefox signal-desktop、特定のブラウザーでリンクを開くようにアプリを強制することです。

ノート

  • .desktopファイルは環境変数を読み込まないので、Exec=$BROWSER %u直接追加しても機能しないため、スクリプトが必要です。
  • BROWSERログイン シェルの代わりにスクリプト内でフォールバックを設定することもできます。
  • デフォルトをオーバーライドする代わりに、カスタム ファイルを作成して/.desktopでデ​​フォルトを変更することも可能です。オーバーライドを使用すると、"正しく" 設定する方が簡単だとわかりました。xdg-settingsxdg-mime
  • URL を最初の位置パラメータとして使用しないブラウザを使用している場合は、.desktopスクリプト内でのカスタム処理が簡単になる場合があります。
  • .desktopプロファイルが にない場合/usr/share/applications、または のオーバーライドが$HOME/.local/share/applications機能しない場合は、代替パス[2] またはディストリビューションのドキュメントを参照してください。

リンク

  1. https://direnv.net/
  2. https://specifications.freedesktop.org/mime-apps-spec/latest/ar01s02.html

答え2

export BROWSER='path to desired browser' && xdg-open 'any url'うまくいくはずです。

関連情報