bash 設定檔/提示符/改變 $PATH

來源:互聯網
上載者:User

一、bash 設定檔

在您的 home 目錄下,運行

ls .bash*

您將看到這些檔案:

l         .bash_history :記錄了您以前輸入的命令,

l         .bash_logout :當您退出 shell 時,要執行的命令,

l         .bash_profile :當您登入 shell 時,要執行的命令,

l         .bashrc :每次開啟新的 shell 時,要執行的命令。

 

請注意後兩個的區別:'.bash_profile'只在會話開始時被讀取一次,而'.bashrc'則每次開啟新的終端(如新的 xterm 視窗)時,都要被讀取。按照傳統,您得將定義的變數,如 PATH ,放到'.bash_profile'中,而象 aliases(別名)和函數之類,則放在'.bashrc'。但由於'.bash_profile'經常被設定成先讀取'.bashrc'的內容,您如果圖省事的話,就把所有配置都放進'.bashrc'。

這些檔案是每一位使用者的設定。系統級的設定儲存在'/etc/profile'、'/etc/bashrc'及目錄'/etc/profile.d'下的檔案中。但您得習慣用各自的設定檔:編輯不需要'root'許可權,還可以使您的設定更有個性。當系統級與使用者級的設定發生衝突時,將採用使用者的設定。

讀取'.bashrc'的內容,您如果要省點事的話,就把您所有的配置都放進'.bashrc'。

上面的這些檔案是每位使用者的設定,系統級的設定儲存在'/etc/profile'、'/etc/bashrc'及目錄'/etc/profile.d'下的檔案中。您最好習慣使用各自的設定檔:編輯不需要'root'許可權,還可以使您的設定更具個性。當系統級與使用者級的設定發生衝突時,將優先採用使用者的設定。

二、提示符

每次當您開啟一個控制台(console)或 xterm 時,最先看到的就是提示符(prompt),類似於:

account@hostname ~ $

 

在預設設定下,提示符將顯示您的使用者名稱、主機名稱(預設是'localhost')、當前所在目錄(在 Unix 中,'~'表示您的 home 目錄)。

按照傳統,最後一個字元可以標識您是普通使用者($),還是'root'(#)。

您可以通過 $PS1 變數來設定提示符。命令

echo $PS1

 

將顯示當前的設定。其中可用字元的含義在 man bash 的'PROMPTING'部分有說明。

如何才能完成理想的設定呢?對於健忘的初學者來講,預設設定有些不友好,因為提示符只顯示目前的目錄的最後一部分。如果您看到象這樣的提示符

tom@localhost bin $

 

您的目前的目錄可能是'/bin'、'/usr/bin'、'/usr/local/bin'及'/usr/X11R6/bin'。當然,您可以用

pwd (輸出目前的目錄,print working directory)

能不能叫 shell 自動告訴您目前的目錄呢?

當然可以。這裡我將提到的設定,包括提示符,大都包含在檔案'/etc/bashrc'中。您可以通過編輯各自 home 目錄下的'.bash_profile'和'.bashrc'來改變設定。

在 man bash 中的'PROMPTING'部分,對這些參數(parameter)有詳細說明。您可以加入一些小玩意,如不同格式的目前時間,命令的記錄號,甚至不同的顏色。

在'~/.bashrc'中,我喜歡的設定是:

PS1="/[/033[1m/][/w]/[/033[0m/] "

'root'在'~/.bashrc'中的設定 是:

PS1="/[/033[0;31m/][/w]/[/033[0m/] "

 

這樣我得到的提示符就是:

[/usr/bin]

 

當用'root'時,變成:

[/usr/bin]

我已經除掉了主機名稱和使用者名稱,因為我用不著這些。但我首先想一眼就能看出我的身份是普通使用者還是'root'。注意到,普通使用者的提示符可以是黑底白字,或白底黑字。

 

要在終端上獲得恰當的顏色調配, 您可以編輯下面這個指令碼color ,賦予執行許可權(chmod +x color),然後再運行。

#!/bin/bash

#

#   This file echoes a bunch of color codes to the

#   terminal to demonstrate what's available.  Each

#   line is the color code of one forground color,

#   out of 17 (default + 16 escapes), followed by a

#   test use of that color on all nine background

#   colors (default + 8 escapes).

#

T='gYw'   # The test text

echo -e "/n                 40m     41m     42m     43m/

     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' /

           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' /

           '  36m' '1;36m' '  37m' '1;37m';

  do FG=${FGs// /}

  echo -en " $FGs /033[$FG  $T  "

  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;

    do echo -en "$EINS /033[$FG/033[$BG  $T  /033[0m";

  done

  echo;

done

echo

 

一種更適當的設定:

PS1="/u: /w//$ "

這樣,提示符就變成:

user_name: /usr/bin$

 

您可以通過命令 export 來測試不同的設定(比如,export PS1="/u: /w//$ ")。如果找到了適合的提示符,就將設定放到您的'.bashrc''中。這樣,每次開啟控制台或終端視窗時,都會生效。

您甚至可以給提示符設定主題(theme),也就是搭配不同的顏色,使其看起來象很棒的 ol
的 C64 提示符。如果您對此感興趣,可以看一下
Bashish( http://hem.passagen.se/arnognulf/index2.html )。

三、改變 $PATH

'$PATH'與'$PS1'一樣,也是環境變數。輸入

set

 

將列出所有當前定義的環境變數。

您看到的這些環境變數在 shell 的設定檔中定義,可能是使用者自己的設定檔,也可能是由'root'通過'/etc'下面的系統級檔案定義的。如果您使用 X ,更多的一些變數將由 X 、您的視窗管理器或案頭環境的開機檔案配置。

如果對這些設定不很清楚,您暫時最好不要隨便改動。瞭解如何改變 $PATH 變數很有用,因為這個變數決定了 shell 將到哪些目錄中尋找命令或程式。如果要執行的命令的目錄在 $PATH 中,您就不必輸入這個命令的完整路徑,直接輸入命令就可以了。一些第三方軟體沒有將可執行檔放到 Linux 的標準目錄中。因此,將這些非標準的安裝目錄添加到 $PATH 是一種解決的辦法。此外,您也將看到如何處理一般的環境變數。

首先,作為慣例,所有環境變數名都是大寫。由於 Linux 區分大小寫,這點您要留意。當然,您可以自己定義一些變數,如'$path'、'$pAtH',但 shell 不會理睬這些變數。

第二點是變數名有時候以'$'開頭,但有時又不是。當設定一個變數時,您直接用名稱,而不需要加'$':

PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin

要擷取變數值的話,就要在變數名前加'$':

echo $PATH

/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin

否則的話,變數名就會被當作普通文本了:

echo PATH

PATH

 

處理 $PATH 變數要注意的第三點是:您不能只替換變數,而是要將新的字串添加到原來的值中。在大多數情況下,您不能用'PATH=/some/directory',因為這將刪除 $PATH 中其他的所有目錄,這樣您在該終端運行程式時,就不得不給出完整路徑。所以,只能作添加:

PATH=$PATH:/some/directory

這樣,PATH 被設成當前的值(以 $PATH 來表示)+新添的目錄。

 

到目前為止,您只為當前終端設定了新的 $PATH 變數。如果您開啟一個新的終端,運行 echo $PATH ,將返回舊的 $PATH 值,而看不到您剛才添加的新目錄。因為您先前定義的是一個局部環境變數(僅限於當前的終端)。

要定義一個全域變數,使在以後開啟的終端中生效,您需要將局部變數輸出(export),可以用'export'命令:

 

export PATH=$PATH:/some/directory

 

現在如果您開啟一個新的終端,輸入 echo $PATH ,也能看到新設定的 $PATH 了。請注意,命令'export'只能改變當前終端及以後啟動並執行終端裡的變數。對於已經啟動並執行終端沒有作用。

為了將目錄永久添加到您的 $PATH ,只要將'export'的那行添加到您的'.bash_profile'檔案中。

請不要在'.bashrc'中設定 PATH ,否則會導致 PATH 中目錄的意外增長。您每次開啟一個新的 shell ,'.bashrc'都會作用。所以如果在該檔案中添加目錄,您每次開啟一個終端,目錄又會被添加。這將導致 PATH 變數由於目錄複寫,不斷地增長。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.