2008年7月1日 星期二

shell的設定

在linux的shell是讓我們使用者輸入指令的地方,
就像在windows下的dos command line差不多~
每一個shell都會有一個環境變數,
使用者會依環境變數所顯示出來的結果會有所不同,
像是ls
會列出當前目錄下的非隱藏的檔案或目錄,
若是ls --color=auto
則會依檔案或是資料夾的權限有所不同而顯示出不同的顏色。

alias ls='ls --color=auto'
當我完成上述指令之後,
則表示我用ls代表ls --color=auto
但是,當我下次重開機或是重開終端機,
則必需要重打一次紅色這一個指令,
我們學長說的好:「做重覆的事情是罪惡的」
我希望每一次進入一個終端機它就幫我設定好所有我希望的環境變數

這時候就要看bashrc這一個檔案了。

家目錄/.bashrc
針對每一個使用者帳號設定的一個範本,
你需要的環境可以設定在裡面~
每一個使用者都有一個家目錄,因此,每一個使用者可以設定自己的環境變數

/etc/bash.bashrc
針對所有的用戶來設定

/etc/skel/
這一個目錄是表示當你新增一個user時,
系統會針對這一個user新增一個家目錄,
此使用者的家目錄的檔案啊都是由這一個目錄直接copy過去的,
所以,若要對每一個未來的user的shell環境增加設定的話,
就直接修改/etc/skel/.bashrc
當然後新增user時,則新增的user的.bashrc就不用在修改了

針對個別用戶
用戶家目錄/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
用戶家目錄/.profile
# ~/.profile: executed by Bourne-compatible login shells.

針對全體用戶
/etc/bash.bashrc
# System-wide .bashrc file for interactive bash(1) shells.
/etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))

由以上敘述可以知道,差異在於:
1.bashrc
系統啟動後就會自動執行。
2.profile
用戶登入後才會執行。

參考資料
Shell, bashrc 與 profile
Advanced Bash-Scripting Guide

沒有留言: