當我登入我的帳戶時,如何自動取得本機安裝的軟體?

當我登入我的帳戶時,如何自動取得本機安裝的軟體?

我已經手動建立並安裝了一個新軟體(從遠端 git 儲存庫)。每次我想使用它時,我都會運行類似的東西,

. /path/to/setup_software.sh

但我希望每次登入帳戶時都會自動發生這種情況,而不是手動執行。我嘗試將上面的命令放入我的.bashrc文件中,以便每次打開核心時都會獲取安裝檔。之後一切都很順利,我很高興。我唯一的小(非常小)問題是,當我打開內核後,它會列印一些日誌訊息,整個採購需要一些時間(我不喜歡這樣:D)。無論如何,我假設有一個更簡潔的解決方案,也許將我的安裝資料夾移到自動運行安裝檔的地方;任何幫助將不勝感激。

答案1

source(或.) 指令放在啟動檔案以外的檔案中.bashrc不會對執行時間有任何幫助。您可以放置​​啟動,/etc/profile.d但延遲將是相同的。至於日誌訊息,請嘗試以下操作.bashrc

. /path/to/setup_software.sh >/dev/null 2>&1

您將看不到日誌訊息。您也不會看到任何突然出現的錯誤。

答案2

您只需將其放入~/.bash_profile,因為這就是您的 shell 在登入時執行的操作;問題:如果您沒有登入 shell(例如,因為您使用圖形介面登入),那麼它就不會運行。

備註:這是三個單獨的答案之一;分離是有意的。

答案3

如果您知道您的腳本僅設定以下內容兩個都

  1. 環境變量,而不是新的 shell 函數,
  2. 永遠不要更改(例如,不依賴時間、日期或您可能更新的內容的版本號),

然後您可以簡單地「模擬」腳本的作用:它將設定一些環境變數。

那麼,如何比較運行腳本之前和之後的環境變數呢?diff非常擅長比較文字檔。

您可以使用set為您提供環境變數(在設定 posix 選項之後。

您可以使用它來建立一個臨時檔案來保存子 shell 中運行<(...)的結果。set所以,把所有這些放在一起:

$ diff <(set -o posix; set) <(export FOO=BAR; set -o posix; set)

會告訴你

33a34
> FOO=BAR

FOO=BAR您可以將其讀作「第二個輸出中存在一行,而不是第一個輸出」。

你可以運行

$ diff <(set -o posix; set) <(. /path/to/setup_software.sh; set -o posix; set)

找出您的安裝腳本在環境中發生了什麼變化。你需要一個人腦來解釋這一點——有些事情是無關緊要的,有些是腳本對你的系統實際所做的事情,有影響。

然後您可以在您的中添加所有更改的變量~/.bashrc,例如

export FOO=BAR

備註:這是三個單獨的答案之一;分離是有意的。

答案4

這聽起來很危險,就像你嘗試太多一樣!您只需新增一個別名來取得腳本,然後啟動您的軟體:

alias startit=". /path/to/setup_software.sh; run_software"

然後打電話startit

如果它不僅僅是一個命令,則可能是您正在尋找諸如進入cd特定資料夾時自動啟動環境之類的命令。

direnv幾乎可以讓你做到這一點。當然,它並沒有解決獲取腳本需要時間的問題 - 但它只在您進入特定目錄時執行一次,而不是在同一 shell 之後執行一次。

備註:這是三個單獨的答案之一;分離是有意的。

相關內容