Linux Bash Shell學習(六):設定環境參數

來源:互聯網
上載者:User

續Linux Bash學習(五):特殊檔案、別名、選項和參數

 

  本文也即《Learning the bash Shell》3rd Edition的第三章Customizing Your Environment之讀書筆記二,但我們將不限於此。設定一個好的使用者環境,對我們開發是非常關鍵的。在這一章節中,從四個方面進行介紹:特別的檔案,別名,選項,參數。上回學習到參數設定的部分。繼續……

參數設定

命令尋找路徑

  PATH儲存命令尋找檔案,可以用echo $PATH來查看。命令都是執行檔案,它所在的目錄如果不在PATH內,在執行的時候必須指出檔案所在目錄。PATH裡面可包含多個檔案目錄,之間用“:”來分割,例如/bin:/usr/bin:/usr/local/bin:/usr/X386/bin

。它們是由先後順序的,我們敲入一個命令,將按順序進行尋找,直至找到。

  有一些命令是已經編譯在Linux中的,例如cd,echo,這些命令不是通過檔案執行的命令。我們有時需要增加這些路徑,例如我們將一些執行檔案放入~/bin中,我們希望登入的時候能夠直接運行,而不需要指出路徑。我們在.bash_profile檔案的最後加入PATH=$PATH:/home/wei/bin

,請注意這裡的順序,為了避免我們自己目錄下的命令幹擾系統命令(同時也可能引起系統安全隱患),我們一般都將新增的路徑放置最後。如果發生衝突,而我們希望使用放置在後面目錄的命令,在執行是需要執行路徑,例如在~/bin/more,這個命令和系統命令衝突,在執行時使用$~/bin/more

命令hashing

  為了提高在PATH路徑中查詢命令的速度,Linux採用了命令hashing的方式。當shell在PATH中找到一個命令時,將這個命令放入雜湊表。當再次使用命令時,將先在雜湊表中進行查詢,可以用hash

命令來查看當前的雜湊表,裡面不僅包括命令的完整路徑,還包括在本次login中使用的次數。可以用hash -r

來清除整個雜湊表,用-d

來刪除某個命令,用-p

來加入某個命令(即使這個命令不存在)。在環境中可以通過hashall

的set來設定on或者off,但是我們沒有必要去修改它。

目錄查詢路徑

  在cd命令的使用,如果非絕對路徑,會在當前路徑開始查詢,可以設定CDPATH來制定cd命令的查詢路徑。格式和PATH類似,使用“:”作為分割,並具有前後先後順序。例如我們設定CDPATH=:~/mybook

,注意不允許路徑以”/”開頭,也不允許以”./“”../“開頭。在上面例子中,我們敲入cd doc,現在目前的目錄尋找,如果沒有則接著在~/mybook下尋找doc目錄。一般來講,如果有一個目錄我們清楚去,我們通常將這個目錄設定為某個變數,例如 mydir=~/myproject/mylearning/,然後通過cd mydir來進入,而不採用CDPATH的方式。

其他參數

  除了前面介紹的參數外,還有很多其他的參數,下面一些比較常見。

HOME

:使用者home目錄
SECONDS

:shell被invoke的時間間隔。
BASH

:當前使用的bash的路徑
BASH_VERSION

:shell的版本,例如我使用的cygwin的版本是3.2.49(22)-release
BASH_VERSINFO

:當前使用shell的主要版本資訊。例如我的版本是3
PWD

:當前路徑
OLDPWD

:上次cd前的路徑。

  這幾個參數用於擷取數值,沒有案例用於設定。

使用者環境

變數

  之前所講的參數其實也是環境變數,例如HOME,MAIL,PATH,PWD。如果將某個變數定義為環境變數,先是定義,然後export

var_names

,可以有多個變數的名字,可以與之前的賦值合一,放置為:export

var_name

=

value

有時候我們子希望某個變數值只在某個子進程中起作用,可以使用var_name=

value command

的方式。通常變數的定義可以在命令的任何部分,而不只限於開頭。

  有一些不是build-in的變數,但是在使用的過程中已經約定俗成,具有特定的含義。包括下面:

  1. BASH:顯示當前shell的路徑,例如/usr/bin/bash
  2. COLUMNS:顯示的列數
  3. EDITOR:text editor的路徑
  4. LINES:顯示的行數
  5. SHELL:顯示login時所使用的shell的路徑,例如/bin/bash,和BASH一般來講是一樣的。
  6. TERM:當前teminal的類型,例如cygwin

  這些有些已經成為我們的環境變數,有些是在/etc/profile設定的全域變數,我們也可以在.bash_profile中定義我們自己的。

在Linux中有個專門記錄使用者環境變數的檔案~/.bashrc,如果我們需要使用這個檔案,需要在.bash_profile中加入source .bashrc

,以保證在login的時候這些環境起效果。我們也可以在.bash_profile中設定,但是一般建議是將OPTIONS和alias放置在.bashrc中,而如果是少量的定義放置在.bash_profile,如果是大量變數的定義考慮放置在.bashrc中。

檔案的修訂

  當我們修改.bash_profile,.bashrc當然可以使用vi等editor的方式,但是我們也可以簡單實用echo,將所需要的設定附加在檔案的最後,例如我們要設定PS1="/u /!—> ",我們需要將其加在.bash_profile的最後,使用

$ echo

'PS1="/u /!--> " ' >>

~/.bash_profile

  注意這裡使用了單引號,這是為了避免裡面有$或者”或者其他所帶來的意義的變化。>>表示附加在檔案的最後,而>表示則覆蓋整個檔案。

相關連結:
我的Linux操作相關文章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.