這是第一次在博客園中寫自己的隨筆,也是第一次使用Markdown的編輯環境,值得紀念一下!希望在以後學習linux的道路上能多多記錄自己的學習心得和遇到問題的解決方法,朝著運維的方向邁出堅實的腳步。 問題描述 最近在編譯一個開源軟體時,在好不容易配置好各種編譯環境之後,由於各種許可權問題還是無法正常進 ...
這是第一次在博客園中寫自己的隨筆,也是第一次使用Markdown的編輯環境,值得紀念一下!希望在以後學習linux的道路上能多多記錄自己的學習心得和遇到問題的解決方法,朝著運維的方向邁出堅實的腳步。
問題描述
最近在編譯一個開源軟體時,在好不容易配置好各種編譯環境之後,由於各種許可權問題還是無法正常進行編譯,所以索性切換到root用戶下進行編譯,這時自然不存在所謂的無許可權問題了。但是有時候並不想在root用戶和普通用戶來回切換,說白了就是懶得輸入root用戶的密碼,太長了。於是就想到了sudo命令,但是關鍵問題就出來了,切換到root用戶下能正常編譯,使用sudo命令竟然無法編譯,提示錯誤為相關的編譯器沒有找到,這種問題對於我這種linux的小白來說有點困難,畢竟使用root用戶是可以編譯通過的。好了以下詳細記錄自己解決問題的辦法吧。
環境變數配置
- 對於全局環境變數配置使用/etc/bash.bashrc和/etc/profile兩個文件,這兩個文件中存放了全局的環境變數。也就是說是所用用戶共用的環境變數。當然讓我困惑的也正是這一點。
- 對於局部環境變數,也就是針對每個用戶的環境變數,在每個用戶家目錄下麵都有兩個隱藏文件分別是.bashrc和.profile,這兩個文件中記錄了,該用戶專屬的環境變數,當然如果在全局環境變數和局部環境變數中都定義了同一個環境變數的情況下,就會出現環境變數路徑重覆的情況,不過好像也沒有什麼大的問題。
- 在執行sudo命令的時候,我以為由於環境變數是配置的全局環境中的,所以應該不用管環境變數的問題。帶著這個問題去百度了一下找到了有關問題的解釋su和sudo的區別,但是關於這篇文章中說的sudo使用的是root的環境變數,我在root的家目錄下的.profile文件中添加了需要的路徑,但是並沒有解決問題,關於這點還帶進一步學習啊。其實對於linux的相關文檔讀的太少了,有待加強。原來sudo使用的是自己的環境變數,於是繼續找答案,在sudo環境變數傳遞中找到了一點思路。但是使用該方法也沒有解決問題,可能是自己人品太差了。最後只能使用殺手鐧了,在secure_path中添加了需要的路徑,這次終於編譯通過了。
結論
- linux主要作為一個伺服器使用,為了保證系統的安全性和給予用戶足夠的許可權執行相關操作,採取的sudo命令使用自己的環境變數也是很有道理的。還是以前對於sudo命令理解的太淺了,經過這回問題的解決,也算是學習了好多,加深了對於sudo命令使用的認識。
- 就一個看似很小的環境變數的問題在linux中竟然能引發這多一連串的問題,看來學習linux還有很漫長的道路要走啊,希望自己能每天都進步一點,最終能實現自己linux運維和開發的目標。