Linux從初期化檔案談Linux的Shell(轉)
Linux從初期化檔案談Linux的Shell(轉)[@more@] 一,前言:
本文主要解說BASH的Shellscript,使用者LOGIN,端末軟體啟動等時的初期化檔案和各個檔案讀入的順序,並且將對初期化檔案的內容進行詳細的解說。
二,概述:
Linux的標準Shell是Bash,Bash的作用並不僅僅是對Shellscript的解釋和實行,並且在使用者登入控制,Term等端末軟體的命令列接受的命令進行處理等方面起著重要的作用。這樣的Shell由於是接受使用者的命令(鍵盤或其它)然後處理之後將結果顯示在螢幕上,所以叫對話式(Interactive)Shell。像這樣的對話式Shell可以對別名的定義,環境變數的設定等進行處理,還可以將端末的一些設定根據自己的愛好來改變,比如LS的顏色化表示,將自己的根目錄變成%,#,在什麼樣的端末上都可以用BackSpace鍵進行消除等。。。。。
像這樣的處理如果記述在初期化檔案之中,在Shell啟動時就可以自動執行,這些初期化檔案可以放在自己的根目錄下根據自己的喜好定製,當然,一些共通的設定可以放在全使用者共痛的初期化檔案中。如果你想將你的Linux設定成適合自己使用的話(這可是Linux的長處),你一定要對Linux的各種初期化檔案的處理順序,各個檔案的不同作用等有一定的瞭解,本文將對此進行詳細的解說。
三,SHELL利用的各種初期化檔案
Shell啟動時處理的初期化檔案大致可分為兩類,使用者LOGIN時啟動的LoginShell和別的檔案啟動時被
喚醒的二級SHELL。
初期化檔案的內容全部是用Shellscript寫成的,在Shell啟動時自動(或者由其它檔案喚醒)讀入,由Shell自身解釋並實行,所以初期化檔案的第一行必須是[#!/bin/sh]或[#!/bin/bash],並且不用加實行屬性。本節將從以下幾個方面進行詳細解說:
.LoginShell利用時的初期化檔案
.二級Shell利用的初期化檔案
.兩種檔案的合理的分別利用
3.1 LoginShell利用時的初期化檔案
Login時,將使用者名稱和密碼輸入之後,在[/etc/passwd]之中記述的Shell會被啟動,LINUX的標準SHELL是Bash,如果想確認自己使用的是何種SHELL的話,在命令列輸入
$ grep "^'whoami':" /etc/passwd
之後,結果是以分割開來的,第一段是使用者名稱,最後一段就是自己的LoginShell啦。
現在說明一下上面的命令,'whoami' 是對whoami實行之後的結果置換,也就是自己的使用者名稱,[^]是正規表現的用法,表示以什麼什麼開始的意思。比如自己的使用者名稱是[john],這條命令就是從檔案[/etc/passwd]之中檢索以[john:]開始的行並表示。
在作為LoginShell的Bash啟動之後,兩個檔案會被連續讀入,由LoginShell解釋實行。開始是全使用者共通的初期化檔案[/etc/profile],接著是各使用者根目錄下的[.bash_profile]
Linux安裝之後,多數情況下會在各使用者根目錄下設定.bash_profile檔案,自己的根目錄下有沒有此檔案,用[ls -a] 確認,如果沒有的話,Bash將如何處理請參照本節的附錄。
/etc/profile,.bash_profile之中典型的處理內容是:PATH,USER等重要的環境變數的設定,程式異常終了時croe檔案的大小的限制,新建檔案的讀寫屬性等。具體的/etc/profile,.bash_profile檔案的內容在後面將詳細介紹。
3.2 二級Shell利用的初期化檔案
像X Window System的 kterm等軟體啟動時啟動的Shell,由於也可以接受使用者的命令,所以也叫對話式Shell當二級對話式Shell啟動時,會自動讀入使用者根目錄下的.bashrc,由呼叫的Shell解釋並執行。一般地說,全使用者共通的設定記述在/etc/bashrc中,但/etc/bashrc不能被自動讀入,必須由.bashrc指示才能被讀入。具體的可以用Bash的source命令或[.]實現,如在.bashrc中做如下記述:
1: if [ -f /etc/bashrc ]; then
2: . /etc/bashrc
3: fi
注:"-f" 是檔案是否存在的判斷條件。
/etc/bashrc,.bashrc之中典型的處理內容是:一般環境變數的設定,組合變數[PSI]的設定,別名的定義, Shell涵數的定義,端末設定的變更等。
3.3 兩種初期化檔案的合理的分別利用
在各使用者的根目錄下有兩個初期化檔案:.bash_profile和.bashrc,如果相同的內容在兩個檔案中都寫的話,就會造成不必要的重複和修改上的麻煩,如何才能合理的分別使用呢,基本原則是:
*在.bashrc中不會發生衝突的儘量在.bashrc中記述,從.bash_profile中喚起.bashrc。
*Login時執行一次就行的命令和二級對話式Shell啟動時反覆執行會發生壞影響的命令在 .bash_profile中記述,
在.bash_profile中喚起.bashrc。的方法和從.bashrc讀入/etc/bashrc 的方法一樣,在.bash_profile中 做如下記述:
1: if [ -f ~/.bashrc ]; then
2: . ~/bashrc
3: fi
附錄:
.bash_login 和.profile
如果使用者根目錄下沒有.bash_profile檔案時,Bash會在根目錄下查詢 .bash_login,如果 .bash_login 不存在的話,Bash會在根目錄下繼續查詢.profile檔案。
其實,這些檔案都是從 C shell(.login), Bourne shell (.profile)來的,都是隻有LoginShell利用的 初期化檔案。不同的是,.profile是Bourne shell 和Bash 都可以利用的初期化檔案。 從各初期化檔案分開使用的方面來看,設定一個Bash 專用的.bash_profile比較合適。
本文主要解說BASH的Shellscript,使用者LOGIN,端末軟體啟動等時的初期化檔案和各個檔案讀入的順序,並且將對初期化檔案的內容進行詳細的解說。
二,概述:
Linux的標準Shell是Bash,Bash的作用並不僅僅是對Shellscript的解釋和實行,並且在使用者登入控制,Term等端末軟體的命令列接受的命令進行處理等方面起著重要的作用。這樣的Shell由於是接受使用者的命令(鍵盤或其它)然後處理之後將結果顯示在螢幕上,所以叫對話式(Interactive)Shell。像這樣的對話式Shell可以對別名的定義,環境變數的設定等進行處理,還可以將端末的一些設定根據自己的愛好來改變,比如LS的顏色化表示,將自己的根目錄變成%,#,在什麼樣的端末上都可以用BackSpace鍵進行消除等。。。。。
像這樣的處理如果記述在初期化檔案之中,在Shell啟動時就可以自動執行,這些初期化檔案可以放在自己的根目錄下根據自己的喜好定製,當然,一些共通的設定可以放在全使用者共痛的初期化檔案中。如果你想將你的Linux設定成適合自己使用的話(這可是Linux的長處),你一定要對Linux的各種初期化檔案的處理順序,各個檔案的不同作用等有一定的瞭解,本文將對此進行詳細的解說。
三,SHELL利用的各種初期化檔案
Shell啟動時處理的初期化檔案大致可分為兩類,使用者LOGIN時啟動的LoginShell和別的檔案啟動時被
喚醒的二級SHELL。
初期化檔案的內容全部是用Shellscript寫成的,在Shell啟動時自動(或者由其它檔案喚醒)讀入,由Shell自身解釋並實行,所以初期化檔案的第一行必須是[#!/bin/sh]或[#!/bin/bash],並且不用加實行屬性。本節將從以下幾個方面進行詳細解說:
.LoginShell利用時的初期化檔案
.二級Shell利用的初期化檔案
.兩種檔案的合理的分別利用
3.1 LoginShell利用時的初期化檔案
Login時,將使用者名稱和密碼輸入之後,在[/etc/passwd]之中記述的Shell會被啟動,LINUX的標準SHELL是Bash,如果想確認自己使用的是何種SHELL的話,在命令列輸入
$ grep "^'whoami':" /etc/passwd
之後,結果是以分割開來的,第一段是使用者名稱,最後一段就是自己的LoginShell啦。
現在說明一下上面的命令,'whoami' 是對whoami實行之後的結果置換,也就是自己的使用者名稱,[^]是正規表現的用法,表示以什麼什麼開始的意思。比如自己的使用者名稱是[john],這條命令就是從檔案[/etc/passwd]之中檢索以[john:]開始的行並表示。
在作為LoginShell的Bash啟動之後,兩個檔案會被連續讀入,由LoginShell解釋實行。開始是全使用者共通的初期化檔案[/etc/profile],接著是各使用者根目錄下的[.bash_profile]
Linux安裝之後,多數情況下會在各使用者根目錄下設定.bash_profile檔案,自己的根目錄下有沒有此檔案,用[ls -a] 確認,如果沒有的話,Bash將如何處理請參照本節的附錄。
/etc/profile,.bash_profile之中典型的處理內容是:PATH,USER等重要的環境變數的設定,程式異常終了時croe檔案的大小的限制,新建檔案的讀寫屬性等。具體的/etc/profile,.bash_profile檔案的內容在後面將詳細介紹。
3.2 二級Shell利用的初期化檔案
像X Window System的 kterm等軟體啟動時啟動的Shell,由於也可以接受使用者的命令,所以也叫對話式Shell當二級對話式Shell啟動時,會自動讀入使用者根目錄下的.bashrc,由呼叫的Shell解釋並執行。一般地說,全使用者共通的設定記述在/etc/bashrc中,但/etc/bashrc不能被自動讀入,必須由.bashrc指示才能被讀入。具體的可以用Bash的source命令或[.]實現,如在.bashrc中做如下記述:
1: if [ -f /etc/bashrc ]; then
2: . /etc/bashrc
3: fi
注:"-f" 是檔案是否存在的判斷條件。
/etc/bashrc,.bashrc之中典型的處理內容是:一般環境變數的設定,組合變數[PSI]的設定,別名的定義, Shell涵數的定義,端末設定的變更等。
3.3 兩種初期化檔案的合理的分別利用
在各使用者的根目錄下有兩個初期化檔案:.bash_profile和.bashrc,如果相同的內容在兩個檔案中都寫的話,就會造成不必要的重複和修改上的麻煩,如何才能合理的分別使用呢,基本原則是:
*在.bashrc中不會發生衝突的儘量在.bashrc中記述,從.bash_profile中喚起.bashrc。
*Login時執行一次就行的命令和二級對話式Shell啟動時反覆執行會發生壞影響的命令在 .bash_profile中記述,
在.bash_profile中喚起.bashrc。的方法和從.bashrc讀入/etc/bashrc 的方法一樣,在.bash_profile中 做如下記述:
1: if [ -f ~/.bashrc ]; then
2: . ~/bashrc
3: fi
附錄:
.bash_login 和.profile
如果使用者根目錄下沒有.bash_profile檔案時,Bash會在根目錄下查詢 .bash_login,如果 .bash_login 不存在的話,Bash會在根目錄下繼續查詢.profile檔案。
其實,這些檔案都是從 C shell(.login), Bourne shell (.profile)來的,都是隻有LoginShell利用的 初期化檔案。不同的是,.profile是Bourne shell 和Bash 都可以利用的初期化檔案。 從各初期化檔案分開使用的方面來看,設定一個Bash 專用的.bash_profile比較合適。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-946640/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux shell格式化XML檔案LinuxXML
- 淺談Linux的檔案系統(轉)Linux
- Linux /proc 目錄下檔案粗談(轉)Linux
- Linux&shell 之Linux檔案許可權Linux
- Linux學習初期,怎麼給檔案或目錄命名呢?Linux
- Linux Shell檔案之間的包含關係Linux
- Linux Shell 下載網站指定檔案Linux網站
- 理解linux的配置檔案(轉)Linux
- linux下的檔案共享(轉)Linux
- Linux的檔案系統與Shell簡單命令Linux
- Linux教程-Turbo Linux Shell(轉)Linux
- Linux 環境下 Makefile 檔案製作淺談(一)(轉)Linux
- Linux 環境下 Makefile 檔案製作淺談(二)(轉)Linux
- Linux/Unix shell 指令碼清除歸檔日誌檔案Linux指令碼
- 理解Linux配置檔案(轉)Linux
- Linux轉換檔案格式Linux
- Linux檔案系統 (轉)Linux
- linux下主要檔案(轉)Linux
- Linux可執行的檔案(轉)Linux
- 新手入門:淺談Linux的檔案系統Linux
- Linux 如何從網上下載檔案Linux
- 用linux shell逐行讀取文字檔案內容Linux
- Linux shell mktemp -d命令生成臨時檔案Linux
- 如何在 Linux shell 中找出所有包含指定文字的檔案Linux
- Linux下的壓縮檔案剖析(轉)Linux
- linux下的各項配置檔案(轉)Linux
- Linux下把sra檔案轉成fastq檔案LinuxAST
- Linux系統檔案型別及檔案的副檔名(轉)Linux型別
- linux shell下除了某個檔案外的其他檔案全部刪除的命令Linux
- Linux Shell之sort命令(轉)Linux
- Linux shell用法和技巧(轉)Linux
- Linux的shell基礎教學(轉)Linux
- Linux的shell程式設計(一)(轉)Linux程式設計
- Linux的shell程式設計(二)(轉)Linux程式設計
- Linux的shell程式設計(三)(轉)Linux程式設計
- Linux的shell程式設計(四)(轉)Linux程式設計
- Linux Shell統計每秒鐘內檔案增加行數Linux
- 淺談Linux最佳化及安全配置(轉)Linux