如何使用環境變數為單一命令設定預設變數?

如何使用環境變數為單一命令設定預設變數?

我需要覆蓋單一進程的預設瀏覽器。此程序從 npm 腳本手動啟動。為了以程式設計方式實現此目的,我決定BROWSER在腳本之前覆蓋環境變數。但這不起作用。它竊取開啟系統範圍內的預設瀏覽器。我嘗試過xdg-open,但它也不起作用。

簡而言之,我希望以下命令在提供的瀏覽器中開啟給定的 URL,而不是在預設瀏覽器中。

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

PS:只是為了多講我的問題。我使用 Firefox 作為我所有機器的預設瀏覽器,並且已經很習慣了。但最近,在偵錯一個 Web 應用程式時,我意識到 Firefox 開發工具未使用某些中斷點。我安裝了 Chromium,它的調試器按預期工作。我使用 Storybook 進行開發,並希望在 Chromium 中開啟它,同時使用 Firefox 作為日常使用的預設變數。

答案1

我需要類似的東西,但不限於尊重的情況$BROWSER,因為xdg-open經常使用錯誤的瀏覽器設定檔。

這是使用以下元件的解決方法:

  • BROWSER載入變數並啟動正確瀏覽器的腳本。
  • 透過將當前預設.desktop設定檔複製到~/.local/share/applications目錄來覆蓋它。
  • 更改文件Exec中的語句.desktop以使用自訂腳本。
  • 在登入 shell 中將該變數設為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變量,例如,工作目錄使用我的瀏覽器的工作設定檔。

另一個是我啟動應用程式BROWSER=hardened-firefox signal-desktop強制應用程式使用特定瀏覽器打開連結。

筆記

  • 該腳本是必須的,因為該.desktop檔案沒有載入環境變量,所以Exec=$BROWSER %u直接添加是不行的。
  • 可以BROWSER在腳本中而不是登入 shell 中設定後備。
  • 可以編寫自訂檔案並使用/.desktop更改預設值,而不是覆蓋預設值;我發現通過覆蓋更容易使其“正確”。xdg-settingsxdg-mime
  • 如果使用的瀏覽器不使用 URL 作為第一個位置參數,則.desktop在腳本中進行自訂和處理可能會更容易。
  • 如果.desktop設定檔不在 中/usr/share/applications,或覆蓋 中$HOME/.local/share/applications不起作用,請嘗試替代路徑[2] 或參閱您的發行版文件。

連結

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

答案2

export BROWSER='path to desired browser' && xdg-open 'any url'應該做到這一點。

相關內容