TCSH shell變數和特徵配置(轉)
TCSHshell可以使使用者使用shell配置變數和特徵配置自己的shell.也可以使用set命令設定特徵.TCSH也有註冊,注消以及何時進入TCSHshell的配置檔案.
一、TCSH shell 特徵
TCSH有幾個特徵,允許控制不同的shell操作的方法.TCSH shell特徵不僅包括許多它自己的特徵,而且還包括KSH/BASH shell中的特徵,如,TCSH中有一個noclobber,防止重定向重寫檔案,一些更常用的特徵為:echo,noclobber,ignoreeof和noglob.透過定義和取消定義與該特性相關的變數,開啟/關閉TCSH shell特徵,為每個特徵命名變數.
例如,透過定義noclobber變數,開啟noclobber特徵.使用set命令定義變數,而使用unset命令取消定義變數.為了執行noclobber特徵,使用set noclobber,為了關閉它,使用unset noclobber.如:
set variable 定義變數unset variable 取消變數
由於這些變數常用於開啟/關閉特徵,所以有時也被叫做雙態切換.
1、echo
在echo被執行之前,設定echo啟動顯示命令的特徵;
set echo 開啟echo特徵unset echo 關閉echo特徵
2、ignoreeof
設定ignoreeof啟動防止使用者使用CTRL+D注消使用者shell的特徵,它用於防止突發性的注消操作,如果此特徵關閉,可以用CTRL+D注消過程.由於在標準輸入中CTRL+D是結束使用者輸入的操作,所以很容易造成突發注消shell程式.因此,ignoreeof特徵就能防止這種突發的注消,當此特徵被設定後,使用者必須用logout命令明確注消.
3、noclobber
設定noclobber啟動預防現有檔案不被重定向輸出的特徵,藉助此特徵,如果把輸出重定向到已經存在的檔案中,就不用標準的輸出重寫檔案.原檔案被儲存.也許會發生這種情況:把現有檔名用作儲存被重定向的輸入的檔名.因此,noclobber特徵使使用者不會意外的重寫原檔案.
%set noclobber%cat oldfile > newfilenewfile: file exist
有時,使用者想用重定向輸出重寫某個檔案,那麼就可在重定向符號運算子之後放置驚歎號!實現重寫操作.這將重寫noclobber特性,用標準的輸出代替檔案內容.
%cat oldfile >!newfile
4、noglob
設定noglob使某特性有效,該特徵禁止使用者shell中的某些字元.字元 * ? [ ] ~將不再擴充套件為匹配的檔名.如:
%set noglob%ls myfile?*myfile?*
5、附錄:常用的TCSH shell特徵;
特徵 功能set 開啟shell特徵unset 關閉shell特徵echo 執行命令前顯示該命令ignoreeof 禁止用CTRL+D注消noclobber 不必透過重新定向重寫檔案noglob 禁止特殊字元用於檔名擴充套件:* ? ~ [ ]notify 當完成後臺任務時立即通知使用者verbose 歷史命令引用後顯示命令
二、TCSH shell 變數
正如在BASH shell中一樣,也可在TCSH shell中使用特殊shell變數來匹配自己的系統.一些變數在系統初始化中定義,也可以在shell中用新的值重新定義變數,有些必須在系統初始化時定義,如最常用的特殊變數prompt變數,它允許建立自己的命令列提示符另外一個是history變數,該變數確定儲存了多少歷史命令/事件.
在TCSH shell中,許多特殊變數的名稱與函式都與BASH/ZSH shell中的變數名稱和函式類似.一些必須用大寫表示,但是大多數用小寫表示.某些特殊變數起類似的作用,但是具有完全不同的實現方法,如mail變數儲存的資訊與BASH shell的MAIL,MAILPATH,MAILCHECK變數儲存的資訊完全相同.
1、prompt prompt2 prompt3
這三個變數為命令列儲存提示符.使用者可以設定自己想要的符號/字串作為提示符.為了設定命令列提示符,可以用
%set prompt="+"+
這樣提示符就變成了+號.也可以使用預定義的一組程式碼使得配置提示符更容易,在每個程式碼前加個%號,例如,用%/表示當前的工作目錄,%t表示時間,%n表示使用者名稱,%!表示下一個歷史事件的號碼,如:
%set prompt="%/"/home/dirname
程式碼列表:
程式碼 說明
%/ 當前執行目錄%h,%!,! 當前歷史號碼%t 當天時間%n 使用者名稱稱%d 日期%w 當前月份%y 當前年份
當命令分為若干行輸入時,變數prompt2被用於特殊情況,為需要輸入改命令而增加的行顯示prompt2,prompt3提示符用於檢查拼寫特徵是否被啟用.
2、cdpath
cdpath變數保持目錄的路徑名,用cd搜尋特定的子目錄,這些路徑名形成一個陣列,就像賦值給TCSH shell的path變數的路徑名陣列一樣,注意在路徑名之間要求有空格.
%set cdpath=(/usr/bin /var/bin /home/username)
3、history和savehist
正如前面瞭解的那樣,history變數常用於確定要儲存的歷史事件的數量,只需給該變數賦值history應該記錄的事件的最大的數值.當達到最大值時,計數器從1開始.但是當注消時,savehist變數儲存儲存在.history檔案中事件的數量,當再次註冊時,這些事件
就成為初始化歷史事件.如:
%set history=20%set savehist=5
當註冊時,歷史列表中將記錄20個事件,但是當注消後,僅僅最後5個事件被儲存在.history檔案中,下一次註冊時,歷史列表將由以前的最後5個命令組成.
4、mail
在TCSH shell中,mail變數綜合了BASH和ZSH shell中的MAIL,MAILCHECK,MAILPATH變數的特徵.TCSH shell mail變數值是一個陣列,該陣列的元素既包括檢查電子郵件的時間間隔,又包括檢查電子郵箱檔案的路徑.要給這些元素賦值,可以把賦值的陣列賦值給mail變數,用圓括號括起來,空格分割的一系列指定陣列的新值.第一個值是再次檢查電子郵件前設定等待的秒數,它類似BASH shell的MAILCHECK變數儲存的陣列.其餘的值由電子郵箱檔案的路徑構成,檢查該檔案獲取郵件.注意,這些變數儲存了BASH和ZSH shell MAIL,MAILPATH變數的功能. 如:
%set mail ( 1200 /usr/mail/user)
mail變數被設定成每1200秒檢查一次電子郵件,被檢查的電子郵箱檔案在/usr/mail/user目錄中.
%set mail (1200 /usr/mail/user /home/userdir)
也可以容易的給mail陣列新增更多的郵箱檔案路徑,注意每個元素之間的空格.
5、附常用的TCSH shell配置變數:
變數 說明home 使用者主目錄的路徑名user 註冊名pwd 當前執行目錄的路徑名shell 用於註冊過程的程式路徑名prompt 主提示符path 目錄路徑名列表,搜尋目錄獲取可執行命令mail mail實用程式檢查該變數來獲取接受資訊的郵件檔名cdpath cd命令搜尋該變數獲取子目錄的目錄路徑名history 歷史列表中命令數量savehist 為下一個註冊儲存歷史列表中的命令數量EXINIT EX/vi編輯器的初始化命令TERM 終端名
三、TCSH shell初始化檔案
TCSH shell有3個初始化檔案: .login .tcshrc .logout,.login檔案是每次註冊時執行的註冊初始化檔案, .tcshrc檔案是每次進入TCSH shell時執行的shell初始化檔案, 該檔案在註冊時執行或者用tcsh命令直接從另一個shell進入TCSH shell時
執行,每次注消時執行.logout檔案
1、 .login
TCSH shell有自己註冊初始化login,該檔案用於配置使用者shell的shell命令和特殊變數定義, .login檔案相當於BASH和ZSH shell中使用的.profile檔案。
.login檔案包含setenv命令,給TERM之類的特殊環境變數賦值,可以用任何標準的編輯器編輯它,改變這些值,也可新增新的值.但是要記住:在TCSH shell中,為環境變數賦值的命令是setenv,如:
%setenv EXINIT 'set nu ai'
定義EXINIT變數並設定vi編輯器行計數和自動縮排的功能.
當編輯.login檔案時要十分小心,不經意的編輯可能造成錯誤的變數設定或者根本沒有設定變數,因此,編輯之前最好備份.login檔案.如果更改了.login檔案,想讓這些變化在當前註冊期間生效,需要使用source命令重新執行該檔案,source命令實際上可執行
任何初始化檔案,其中包括.tcshrc檔案和.logout檔案,如:
%source .login
2、 .tcshrc
每當進入TCSH shell或產生任何子shell時,就執行.tcshrc初始化檔案,如果TCSH shell是使用者註冊的shell,那麼當使用者註冊時, .tcshrc檔案和.login檔案一起執行,如果從另外一個shell進入TCSH shell, .tcshrc檔案被自動執行,檔案中包含的變數
和別名被定義.
實際上,每當產生一個shell時,如執行shell指令碼,就執行.tcshrc檔案,也就是說,每當建立一個shell時,就執行.tcshrc檔案,這允許在.tcshrc中定義區域性變數,在某種意義上說,區域性變數可以進入任何子shell,即時像history這樣的使用者定義的變數也是區域性變數,但要為每個產生的子shell定義特殊變數,這樣,為每個子shell變數設定history,但是,每個子shell都有自己的區域性history變數,使用者甚至可在不影響其他子shell的變數的情況下改變一個子shell的區域性history變數,在shell初始化檔案中定義特殊變數可以看做是BASH shell匯出變數,在BASH shell和ZSH shell中的匯出變數只把自己的複製傳送給子shell,改變複製不會影響原始定義.
.tchsrc檔案也可包含別名變數和用於開啟shell特徵的特徵變數,別名變數和特徵變數是區域性變數,限定於shell內部.但是.tcshrc檔案在每個shell中都將定義這些變數.因此, .tcshrc檔案通常儲存各種命令定義的別名,如:
.tcshrc
#set shell=/usr/bin/cshset path=$PATH (/bin /usr/bin .)set cdpath=(/home/dirname/filename /home/dirname/files)set prompt="!$pwd>"set history=20set ignoreeofset noclobberalias rm 'rm -i'alias mv 'mv -i'alias cp 'cp -i'
與環境變數不同,區域性變數用set命令定義,在.tcshrc檔案中的區域性變數應該使用set命令定義,用setenv命令定義的環境變數是放在.login檔案中的,請記住:當改變path或cdpath的路徑名時,陣列中包含這些路徑名,陣列中的每個元素要用空格分開,如果新增新的路徑名時,必須保證用空格把它和其他的路徑名分開.如果已經改變了.tcshrc檔案,希望這些變化在當前註冊中立即生效,別忘了用source命令重複執行.tcshrc檔案。
3、 .logout
.logout檔案也是初始化檔案,只不過它在注消時執行,使用者可以設定.logout檔案以使其完成任何在注消時想要完成的操作,檔案中沒有定義變數,常包括關閉程式的shell命令.可以向.logout檔案中新增自己的shell命令,如:
.logout
#clearecho "Good-bey..."
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939777/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell配置環境變數變數
- Shell程式設計-shell變數2-位置變數和預定義變數程式設計變數
- linux基礎——shell變數(本地變數和環境變數)Linux變數
- Shell 變數變數
- Shell變數變數
- Shell轉義字元與變數替換字元變數
- Shell--變數變數
- shell Bash變數變數
- (2) Shell 變數變數
- Shell入門——shell特性、變數變數
- awk中使用shell的環境變數(轉)變數
- Shell階段02 shell變數運算(整數運算/小數運算), shell變數案例變數
- shell程式設計之環境變數配置檔案程式設計變數
- Shell程式設計-shell變數1程式設計變數
- shell基礎篇(二)-shell變數變數
- [Shell] shell中的內部變數變數
- 2.Shell變數變數
- Shell 變數學習變數
- Linux Shell變數Linux變數
- [shell基礎]——變數變數
- awk引用shell變數變數
- awk使用shell變數變數
- Shell啟動檔案與環境變數(轉)變數
- Shell程式設計-02-Shell變數程式設計變數
- shell特定變數和Makefile中自動化變數的對比記憶變數
- shell(2)永久環境變數和字串顯位變數字串
- SAP BPS : 一變數多特徵變數特徵
- Shell學習【變數使用】變數
- CentOS shell中的變數CentOS變數
- Linux之shell變數Linux變數
- 常用的shell變數用法變數
- SHELL的系統變數變數
- 在AIX作業系統下shell的變數(轉)AI作業系統變數
- 網中人“shell十三問之變數替換” 外傳(初學shell必看)(轉)變數
- 從學習export命令理解到的Shell環境和變數生存期(轉)Export變數
- [轉]Shell向Perl指令碼中傳遞變數的方法指令碼變數
- 《Linux shell變數總結回顧》RHEL6(轉)Linux變數
- JDK和Java環境變數的配置JDKJava變數