Wie lege ich eine Standardvariable für einen einzelnen Befehl mit Umgebungsvariablen fest?

Wie lege ich eine Standardvariable für einen einzelnen Befehl mit Umgebungsvariablen fest?

Ich muss den Standardbrowser für einen einzelnen Prozess überschreiben. Dieser Prozess wird manuell von npm-Skripten aus gestartet. Um dies programmgesteuert zu erreichen, habe ich beschlossen, die BROWSERUmgebungsvariable direkt vor dem Skript zu überschreiben. Aber es funktioniert nicht. Es öffnet einfach den systemweiten Standardbrowser. Ich habe es mit versucht xdg-open, aber es funktioniert auch nicht.

Kurz gesagt, ich möchte, dass der folgende Befehl die angegebene URL im bereitgestellten Browser öffnet, nicht im Standardbrowser.

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

PS: Ich möchte nur ein bisschen mehr über mein Problem erzählen. Ich verwende Firefox als Standardbrowser auf allen meinen Rechnern und habe mich ziemlich daran gewöhnt. Aber als ich kürzlich eine Webanwendung debuggte, bemerkte ich, dass einige Haltepunkte von den Firefox-Entwicklertools nicht verwendet wurden. Ich habe Chromium installiert und sein Debugger funktionierte wie erwartet. Ich verwende Storybook für die Entwicklung und möchte es in Chromium öffnen, während ich Firefox als Standardvariable für den normalen Alltagsgebrauch verwende.

Antwort1

Ich brauchte etwas Ähnliches, aber nicht beschränkt auf Situationen, in denen dies respektiert wurde $BROWSER, da xdg-openhäufig das falsche Browserprofil verwendet wurde.

Hier ist ein Workaround mit den folgenden Komponenten:

  • Ein Skript, das die BROWSERVariable lädt und den richtigen Browser startet.
  • Eine Überschreibung des aktuellen Standardprofils .desktopdurch Kopieren in das ~/.local/share/applicationsVerzeichnis.
  • Ändern Sie die ExecAnweisungen in der .desktopDatei, um das benutzerdefinierte Skript zu verwenden.
  • Setzen Sie die BROWSERVariable in der Anmelde-Shell auf einen sinnvollen Standardwert, um eine Fallback-Möglichkeit zu haben.

Schritt für Schritt

Ich habe meinem ~/binVerzeichnis ein Skript mit dem Namen hinzugefügt custom-browser, das wie folgt aussieht:

$BROWSER "$@"

Zweitens finden Sie das aktuelle .desktopProfil mit:

xdg-settings get default-web-browser

Das Ergebnis war firefox.desktop, das ich in mein Benutzer-Home-Verzeichnis kopiert habe:

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

Ich habe die ExecAnweisungen in ~/.local/share/applications/firefox.desktop„launch“ geändert /home/{user}/bin/custom-browser.

Jetzt kann ich Folgendes verwenden:

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

Um je nach BROWSERVariable unterschiedliche Browser zu öffnen. Ich hoffe, das hilft Ihnen irgendwie.

Meine Nutzung

ich benutzedirenv[1] Um die Variable basierend auf dem Verzeichnis festzulegen BROWSER, verwenden Arbeitsverzeichnisse beispielsweise ein Arbeitsprofil für meinen Browser.

Eine andere Möglichkeit besteht darin, Apps mit zu starten, BROWSER=hardened-firefox signal-desktopum die App zu zwingen, Links mit einem bestimmten Browser zu öffnen.

Anmerkungen

  • Das Skript ist erforderlich, da die .desktopDatei keine Umgebungsvariablen lädt und das Exec=$BROWSER %udirekte Hinzufügen daher nicht funktioniert.
  • BROWSEREs ist möglich, den Fallback im Skript anstelle der Login-Shell festzulegen .
  • Es ist möglich, eine benutzerdefinierte .desktopDatei zu schreiben und die Vorgabe mit xdg-settings/ zu ändern xdg-mime, anstatt die Vorgabe zu überschreiben. Ich fand es einfacher, es mit der Überschreibung „richtig“ zu machen.
  • Wenn Sie Browser verwenden, die die URL nicht als ersten Positionsparameter verwenden, ist eine benutzerdefinierte Vorgehensweise .desktopund die Verarbeitung im Skript möglicherweise einfacher.
  • Wenn das .desktopProfil nicht in ist /usr/share/applicationsoder die Überschreibung in $HOME/.local/share/applicationsnicht funktioniert, versuchen Sie dasalternative Wege[2] oder konsultieren Sie die Dokumentation Ihrer Distribution.

Links

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

Antwort2

export BROWSER='path to desired browser' && xdg-open 'any url'sollte funktionieren.

verwandte Informationen