最近,阿舍就有想到要來設定一下使用者登入後自動執行 script 的功能,然後,就才想起來,這個 .bash_profile 和 .profile 是針對個人,如果是要設定給所有的使用者的話,就不太適合,因為,阿舍不可能手動去改每位使用者的家目錄下的這二個檔案哩 !
阿舍設了三個檔案來執行,結果,是依檔名字母順序來執行的哩 ! |
所以,阿舍查了一下 Ubuntu Document 的環境變數說明,然後,阿舍就才知道,原來,Ubuntu 是有幾個檔案專門用來處理像阿舍這種想要讓所有的使用者在登入後自動設定或執行的需求哩 !
首先,第一個要介紹的就是 /etc/environment 這個專門用來設定環境變數的設定檔案,只要是在這個檔案有設定的變數,就會反應在所有使用者的環境中,打開 /etc/environment 這個檔案就可以看到有一組 PATH 環境變數的設定,如果使用者自己的 .profile 或 .bash_profile 沒有另外對 PATH 變數做調整的話,預設就會和在 /etc/environment 所設定的 PATH 變數相同哩 !
不過,要注意的是, /etc/environment 檔案所設定的變數是不能用運算式來設定的,也就說,Ubuntu 會把 /etc/environment 檔案裡的等號右邊的內容都檔成字串,而不會再做任何運算,所以,當阿舍把下面第一行的文字加到 /etc/environmemt 的話,那麼結果就不會變成 ArthurToday,而是 'Arthur+Today' 哩 ! (立即讓 /etc/environment 生效的方式,請參考這篇說明)
# 把這一行加到 /etc/environment 檔案
ATD='Arthur'+'Today'
# 執行結果
$ . /etc/environmenmt # 立即讓 /etc/environment 生效
$ echo $ATD
Arthhur+Today
介紹完這個 /etc/environment 檔案之後,再來,就是要介紹可以跑 Script 的部份哩 ! 在 Ubuntu 上有個 /etc/profile 的檔案可以用來放要給所有使用者登入後執行的 Script,不過,Ubuntu 的官方文件裡有提到,並不建議你這樣做,而是建議你另外寫成一個獨立的檔案來放到 /etc/profile.d 資料夾哩 !
Ubuntu 會在使用者登入後,自動執行 /etc/profile.d 資料夾下,所有以 .sh 檔案,所以,只要把寫好的 Script 放到 /etc/profile.d 資料夾 下,就可以達到登入後自動執行的效果,就不用去改 /etc/profile 這個檔案哩 !
不過,阿舍有個疑問,就是,放在 /etc/profile.d 資料夾的檔案有很多個時,那個檔案會先被執行哩 ? 阿舍沒找到有說明的文件,因此,阿舍就自己試了一下,嗯 ... 好像和阿舍猜的一樣,是用檔案名稱來排序的,數字越小越先,字母越前面越早,所以,如果在執行的時候有順序上的考量時,可以參考一囉 !
另外,再提醒一下,這個登入自動執行和開機自動執行是兩種完全不同的執行時機,阿舍自己有時候也會給它搞混的哩 ! ....
介紹完這個 /etc/environment 檔案之後,再來,就是要介紹可以跑 Script 的部份哩 ! 在 Ubuntu 上有個 /etc/profile 的檔案可以用來放要給所有使用者登入後執行的 Script,不過,Ubuntu 的官方文件裡有提到,並不建議你這樣做,而是建議你另外寫成一個獨立的檔案來放到 /etc/profile.d 資料夾哩 !
Ubuntu 會在使用者登入後,自動執行 /etc/profile.d 資料夾下,所有以 .sh 檔案,所以,只要把寫好的 Script 放到 /etc/profile.d 資料夾 下,就可以達到登入後自動執行的效果,就不用去改 /etc/profile 這個檔案哩 !
不過,阿舍有個疑問,就是,放在 /etc/profile.d 資料夾的檔案有很多個時,那個檔案會先被執行哩 ? 阿舍沒找到有說明的文件,因此,阿舍就自己試了一下,嗯 ... 好像和阿舍猜的一樣,是用檔案名稱來排序的,數字越小越先,字母越前面越早,所以,如果在執行的時候有順序上的考量時,可以參考一囉 !
另外,再提醒一下,這個登入自動執行和開機自動執行是兩種完全不同的執行時機,阿舍自己有時候也會給它搞混的哩 ! ....
推薦閱讀
- 問題沒解決嗎? 更多的 Ubuntu 教學在 這裡
- Prompt Injection: 提示詞注入安全漏洞
- 二款 Mac 無痛安裝的 Stable Diffusion 軟體
- 用 AI 寫部落格文章好不好 ?
- 沒有免費的 Midjourney 和 Colab 又不想花錢怎麼辦 ?
- 不學 Prompt 技巧也能善用 ChatGPT 的簡單方法
- 企業 AI 應用:不只是聊天機器人
- Automatic 比 Automatic1111 更好用 ? 都是 Stable Diffusion WebUI
- Stable Diffusion 的 /describe 圖生文功能
- AI 畫出讓人可怖的美圖 !
有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁
2 則留言 :
/etc/bashrc不行嗎?
Hello,
/etc/bashrc 在 Ubuntu 是用 /etc/bash.bashrc 這個檔案,阿舍本來也以為是用這個檔,不過,據 Ubuntu 官方文件的說明,這個檔案在某些環境中是不會被執行的,尤其是開啟在圖型介面的環境時,所以,就得用 /etc/profile.d 哩 ! .... 供參囉 ! ^^=
"The shell config file /etc/bash.bashrc is sometimes suggested for setting environment variables system-wide. While this may work on Bash shells for programs started from the shell, variables set in that file are not available by default to programs started from the graphical environment in a desktop session." ...
張貼留言
歡迎留言提問和討論 .... 😁