天天看點

使用 linux的幾個需要注意的問題(之二)

1.在shell腳本中改變目前目錄

cd隻能改變current目錄,是以不能指望在一個腳本中實作cd ...(long path)的目的,腳本是通過fork/exec執行的,等于說在一個新的程序環境中執行的,一旦這個腳本執行完畢,目前程序的pwd還将是原來的shell的pwd,shell腳本中的cd對pwd的改變随着shell腳本的exit而一同消失,還是老老實實敲路徑吧,其實為了避免敲過于長的路徑,可以将自己的登入路徑設定成那個很長的路徑,另外shell提供了一個方法,那就是用source執行腳本,source和cd一樣,都是shell的内建指令,當你執行source abc的時候,并不會以fork/exec的方式來執行abc而是直接讀取abc的每一行,讀一行便執行一行,但是要注意,用source執行shell腳本的時候,腳本中不要有exit,否則一下子連shell都退出了

2./etc/passwd維護了一個uid和使用者名的對應關系,而很多程式比如ls -l都需要這個映射關系,是以所有的使用者都必須對該檔案可讀

3.getspnam函數的行為其實就是對/etc/password檔案的f2i行為,将檔案資料轉換為了内部資料,但是為何不将password檔案也定義成二進制的呢,比如utmpx檔案一樣?将password定義成二進制是非常友善的,每一行一個記錄,一條記錄對應一個結構體,若幹個記錄正好是一個結構體數組,豈不很好?是很好,但是那樣做的話每個需要讀取password檔案的程式都應該知道這個結構體的文檔描述,如果是文本檔案,雖然每個程式也依然需要知道檔案各個字段的含義,但是卻可以将說明文檔寫入同一個檔案中,比如用注釋的形式存在,unix和linux中很多配置檔案都是這樣的,沒有單獨的文檔,頂多一個随程式安裝的man/info,由于文檔是文本的,是以為了将文檔和對應的檔案內建,檔案也最好是文本的,程式設計者看見了檔案,同時也可以随即參考文檔,最終看懂了檔案,開始編碼,省去了文檔的管理,這也許就是unix使用人可讀的文本格式的深層次的原因吧。

 本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1271807

繼續閱讀