linux ubuntu全局變量的那些事

ubuntu全局變量配置

最近遇到了個問題,就是在普通用戶下在/etc/profile中配置了全局變量,打開命令行窗口也正常使用,但是一使用sudo或者su到root用戶就發現全局變量失效了。這是個什麼情況?說好的全局變量呢?
切換到root後就沒有了
上網查了一番,似懂非懂的搞明白了,在這裏mark一下我自己的理解,如果說的有錯誤,歡迎留言指正 。

ubuntu在加載全局變量的時候,首先加載/etc/profile文件裏的配置,由於/etc/profile是全局配置,所以一打開命令行窗口時,這個配置文件被首先讀取。然後,再讀取/etc/profile.d/文件夾下面的各個配置文件。
那麼這2個有什麼區別呢?可以這麼理解,爲了防止/etc/profile配置過多或者配置頻繁更換增刪導致出差錯,於是有了/etc/profile.d/。在這個文件夾下你可以新建一個和自己項目相對應的配置文件,然後單獨修改這個文件,即使不想用了,也可以直接把這個文件刪除掉,方便得很。

但是,爲什麼打開命令行窗口還有全局變量,su之後就沒了呢?這是因爲/etc/profile是針對命令行窗口的全局變量,即無論打開多少個命令行窗口,這個文件都會被加載,但是隻是針對當前命令行窗口的登錄用戶而言,如果切換到其他用戶,這個配置文件不會再次被加載。
因此,如果想要配置全局怎麼辦?那麼就要修改每個用戶目錄下的配置文件了。每個用戶單獨的配置文件在各自用戶下的.bashrc文件內。即 ~/.bashrc。這個文件是每個用戶登錄的時候,都會讀取用戶各自的配置文件。這個纔是用戶意義上的全局變量,但也顯然不是咱們需要的那個全局變量。

目前的方法就是在/etc/profile配置完後,修改每個用戶的bashrc文件,在最後添加上source /etc/profile命令,讓每個用戶在讀取配置的時候,自動source一下profile的配置。感覺還不是最完美的解決辦法。

如果有更好的解決辦法,歡迎留言交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章