我發現下面的代碼someone's .bashrc無法瞭解線的.bashrc
# Source global definitions
[ -f /etc/bashrc ] && . /etc/bashrc
它顯然引起了我的Bash複製了很多。
單線表示什麼意思?
我發現下面的代碼someone's .bashrc無法瞭解線的.bashrc
# Source global definitions
[ -f /etc/bashrc ] && . /etc/bashrc
它顯然引起了我的Bash複製了很多。
單線表示什麼意思?
什麼可能會讓你感到困惑:[
實際上是一個Unix shell命令。您可以在/bin
找到它,當你更仔細,這是一個硬鏈接到test
命令,這意味着你也可以這樣寫:
test -f /etc/bashrc && source /etc/bashrc
(.
是source
快捷方式)。
歷史記爲您的娛樂:當Unix的被髮明,沒有屏幕,但「電傳打字機」,這是一種打字機。您向Unix主機發送了一個命令,電傳打印機會打印結果。傳聞如下:由於早期的Unix開發者厭倦了所有創建的teletypes,他們試圖將所有命令縮短爲兩個字母,所有選項都縮寫爲單個字母。
如果你是綠色的,則傳言是:爲了節省紙張和色帶,他們試圖縮短所有的命令,以兩個字母和所有選項的單個字母。
如果你查看/dev
,你會看到所有那些tty
文件,這是從原始teletypes中剩下的唯一文件。
[編輯]如何弄清楚,那[
和test
都是同一件事:
這是一個兩步的過程。 ls -il [ test echo
給出:
356954 -r-xr-xr-x 2 root wheel 46K May 31 2008 [
356954 -r-xr-xr-x 2 root wheel 46K May 31 2008 test
67392 -rwxr-xr-x 1 root wheel 18K Sep 22 2007 echo
首先,您會注意到「root」之前的「2」。這意味着有兩個指向相同數據的目錄條目(a.k.a文件名)(Unix語言:inode,i-node或「索引節點」)。磁盤上的每個inode都有一個唯一的編號,這是上例(356954)中的第一個編號。你可以看到[
和test
共享相同的inode,但是echo
沒有。
請注意,沒有快速方法可以獲取指向同一個inode的所有目錄條目。您必須在整個文件系統中搜索具有相同索引節點的條目(使用find /path -inode 356954
)
至於tty「文件」:這些實際上是設備節點。權限的第一個字母是「c」,如「字符設備」中的。你可以找到文件的「 - 」,目錄的「d」和塊設備的「b」(比如硬盤,軟盤等)。這不是一個文件,但它確實是一個程序。您可以通過向它發送數據(「寫入」「文件」中的某些內容)或從中讀取數據來與之通話。這個概念似乎與真實文件非常接近,以至於Unix發明者使用文件API以及稱爲「IO控制」(或ioctl)的東西來發送特殊命令(如查詢終端的大小)。
如果切換到控制檯模式( 「CTRL-ALT-F1」),你會看到類似這樣的:
Welcome to .... - Kernel .... (tty1)
切換到另一臺主機(使用Alt-F2 ...的Alt-F6)你會看到他們連接到tty2
到tty6
。登錄其中一個,並嘗試
回聲測試>的/ dev/tty1上
和字符串會出現連接到tty1
在控制檯上。從tty中讀取並不是那麼容易,因爲已經有一個程序從中讀取(只要沒有登錄,可以輸入mingetty
,登錄後可輸入login
或bash
)。如果您嘗試read line < /dev/tty1
,那將與已在該控制檯上運行的程序發生衝突,但原則上它會起作用。
謝謝您的解釋! – 2009-04-27 15:03:09
如果/ etc/bashrc存在(-f運算符)執行它。
這工作,因爲& &(邏輯與操作者)只計算第二個參數,如果第一個是真實的(加快)。所以如果文件存在,運行它!
它實際上被稱爲「AND列表構造」。
請參閱here瞭解更多信息。
你可能會考慮下列一些常用的例子太多:
make && make install
它只如果make成功完成安裝。
+1:用於說明&& – 2009-04-27 14:42:53
它檢查文件/ etc/bashrc是否存在,並在檢查成功時執行它。 dot命令是'source'命令的別名。
+1點'澄清 – 2009-04-27 14:19:06
我不知道你爲什麼不問在這裏:) http://comments.pixelbeat.org/settings/
該命令的更詳細的當量是:
if test -r /etc/bashrc; then
source /etc/bashrc
fi
你應該閱讀有關bash的[啓動文件處理( https://www.gnu.org/software/bash/manual/bash.html#Bash-Startup-Files)。 – 2016-06-12 17:21:45