The Linux Command Line读书笔记(二)
第七章:
字符展開(kāi):
通過(guò)展開(kāi),你輸入的字符,在 shell 對(duì)它起作用之前,會(huì)展開(kāi)成為別的字符。
[me@linuxbox ~]$ echo * Desktop Documents ls-output.txt Music Pictures Public Templates Videosshell 把 “*” 展開(kāi)成了另外的東西(在這種情況下,就是在當(dāng)前工作目錄下的文件名字),在 echo 命令被執(zhí)行前。當(dāng)回車鍵被按下時(shí),shell 在命令被執(zhí)行前在命令行上自動(dòng)展開(kāi)任何符合條件的字符。
路徑名展開(kāi):
通配符工作機(jī)制叫做路徑名展開(kāi)。
[me@linuxbox ~]$ echo D* Desktop Documents[me@linuxbox ~]$ echo *s Documents Pictures Templates Videos[me@linuxbox ~]$ echo [[:upper:]]* Desktop Documents Music Pictures Public Templates Videos波浪線展開(kāi):
波浪線字符 (“~”) 有特殊的意思。當(dāng)它用在一個(gè)單詞的開(kāi)頭時(shí),它會(huì)展開(kāi)成指定用戶的主目錄名,如果沒(méi)有指定用戶名,則是當(dāng)前用戶的主目錄:
[me@linuxbox ~]$ echo ~ /home/me如果有用戶 “foo” 這個(gè)帳號(hào),然后:
[me@linuxbox ~]$ echo ~foo /home/foo算數(shù)表達(dá)式展開(kāi):
shell 允許算術(shù)表達(dá)式通過(guò)展開(kāi)來(lái)執(zhí)行。這允許我們把 shell 提示當(dāng)作計(jì)算器來(lái)使用:
[me@linuxbox ~]$ echo $((2 + 2)) 4算術(shù)表達(dá)式展開(kāi)使用這種格式:
$((expression))算術(shù)表達(dá)式只支持整數(shù)(全部是數(shù)字,不帶小數(shù)點(diǎn)),但是能執(zhí)行很多不同的操作。其中去冪是**。
在算術(shù)表達(dá)式中空格并不重要,并且表達(dá)式可以嵌套。例如,5 的平方乘以 3:
花括號(hào)展開(kāi):
通過(guò)花括號(hào)展開(kāi),可以從一個(gè)包含花括號(hào)的模式中創(chuàng)建多個(gè)文本字符串。
[me@linuxbox ~]$ echo Front-{A,B,C}-Back Front-A-Back Front-B-Back Front-C-Back[me@linuxbox ~]$ echo Number_{1..5} Number_1 Number_2 Number_3 Number_4 Number_5[me@linuxbox ~]$ echo {Z..A} Z Y X W V U T S R Q P O N M L K J I H G F E D C B A[me@linuxbox ~]$ echo a{A{1,2},B{3,4}}b aA1b aA2b aB3b aB4b例如創(chuàng)建一系列以“年-月”形式命名的目錄:
[me@linuxbox ~]$ mkdir Pics [me@linuxbox ~]$ cd Pics [me@linuxbox Pics]$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12} [me@linuxbox Pics]$ ls 2007-01 2007-07 2008-01 2008-07 2009-01 2009-07 2007-02 2007-08 2008-02 2008-08 2009-02 2009-08 2007-03 2007-09 2008-03 2008-09 2009-03 2009-09 2007-04 2007-10 2008-04 2008-10 2009-04 2009-10 2007-05 2007-11 2008-05 2008-11 2009-05 2009-11 2007-06 2007-12 2008-06 2008-12 2009-06 2009-12參數(shù)展開(kāi):
例如,叫做 “USER” 的變量包含你的用戶名。喚醒參數(shù)展開(kāi),揭示 USER 中的內(nèi)容,可以這樣做:
[me@linuxbox ~]$ echo $USER me通過(guò)參數(shù)展開(kāi),如果你拼寫錯(cuò)了一個(gè)變量名,展開(kāi)仍然會(huì)進(jìn)行,只是展成一個(gè)空字符串。
命令替換:
命令替換允許我們把一個(gè)命令的輸出作為一個(gè)展開(kāi)模式來(lái)使用:
[me@linuxbox ~]$ echo $(ls) Desktop Documents ls-output.txt Music Pictures Public Templates Videos [me@linuxbox ~]$ ls -l $(which cp) -rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp這里我們把 which cp 的執(zhí)行結(jié)果作為一個(gè)參數(shù)傳遞給 ls 命令,因此要想得到 cp 程序的輸出列表,不必知道它完整的路徑名。我們不只限制于簡(jiǎn)單命令。也可以使用整個(gè)管道線(只展示部分輸出):
[me@linuxbox ~]$ file $(ls /usr/bin/* | grep zip) /usr/bin/bunzip2: symbolic link to `bzip2' ....雙引號(hào):
如果你把文本放在雙引號(hào)中,shell 使用的特殊字符,除了 $,\ (反斜杠),和 ‘(倒引號(hào))之外,則失去它們的特殊含義,被當(dāng)作普通字符來(lái)看待。這意味著單詞分割,路徑名展開(kāi),波浪線展開(kāi),和花括號(hào)展開(kāi)都被禁止,然而參數(shù)展開(kāi),算術(shù)展開(kāi),和命令替換仍然執(zhí)行。使用雙引號(hào),我們可以處理包含空格的文件名。比方說(shuō)我們是不幸的名為 two words.txt 文件的受害者。如果我們?cè)噲D在命令行中使用這個(gè)文件,單詞分割機(jī)制會(huì)導(dǎo)致這個(gè)文件名被看作兩個(gè)獨(dú)自的參數(shù),而不是所期望的單個(gè)參數(shù):
[me@linuxbox ~]$ ls -l two words.txt ls: cannot access two: No such file or directory ls: cannot access words.txt: No such file or directory使用雙引號(hào),我們可以阻止單詞分割,得到期望的結(jié)果;進(jìn)一步,我們甚至可以修復(fù)破損的文件名。
[me@linuxbox ~]$ ls -l "two words.txt" -rw-rw-r-- 1 me me 18 2008-02-20 13:03 two words.txt [me@linuxbox ~]$ mv "two words.txt" two_words.txt在雙引號(hào)中,參數(shù)展開(kāi),算術(shù)表達(dá)式展開(kāi),和命令替換仍然有效:
[me@linuxbox ~]$ echo "$USER $((2+2)) $(cal)" me 4 February 2008 Su Mo Tu We Th Fr Sa ....單引號(hào):
如果需要禁止所有的展開(kāi),我們使用單引號(hào)。以下例子是無(wú)引用,雙引號(hào),和單引號(hào)的比較結(jié)果:
[me@linuxbox ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER text /home/me/ls-output.txt a b foo 4 me[me@linuxbox ~]$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER" text ~/*.txt {a,b} foo 4 me[me@linuxbox ~]$ echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER' text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER注意:
hlk@hlk-Lenovo-XiaoXin-700-15ISK:~$ echo x {a,b} x a bhlk@hlk-Lenovo-XiaoXin-700-15ISK:~$ echo x_{a,b} x_a x_b轉(zhuǎn)義字符:
有時(shí)候我們只想引用單個(gè)字符。我們可以在字符之前加上一個(gè)反斜杠,在這個(gè)上下文中叫做轉(zhuǎn)義字符。經(jīng)常在雙引號(hào)中使用轉(zhuǎn)義字符,來(lái)有選擇地阻止展開(kāi)。
[me@linuxbox ~]$ echo "The balance for user $USER is: \$5.00" The balance for user me is: $5.00[me@linuxbox ~]$ mv bad\&filename good_filename?鍵盤高級(jí)操作技巧:
移動(dòng)光標(biāo):
| 按鍵 | 行動(dòng) |
| Ctrl-a | 移動(dòng)光標(biāo)到行首 |
| Ctrl-e | 移動(dòng)光標(biāo)到行尾 |
| Ctrl-f | 光標(biāo)前移一個(gè)字符;和右箭頭作用一樣 |
| Ctrl-b | 光標(biāo)后移一個(gè)字符;和左箭頭作用一樣 |
| Alt-f | 光標(biāo)前移一個(gè)字 |
| Alt-b | 光標(biāo)后移一個(gè)字 |
| Ctrl-l | 清空屏幕 |
修改文本:
| 按鍵 | 行動(dòng) |
| Ctrl-d | 刪除光標(biāo)位置的字符 |
| Ctrl-t | 光標(biāo)位置的字符和光標(biāo)前面的字符互換位置 |
| Alt-t | 光標(biāo)位置的字和其前面的字互換位置 |
| Alt-l | 把從光標(biāo)位置到字尾的字符轉(zhuǎn)換成小寫字母 |
| Alt-u | 把從光標(biāo)位置到字尾的字符轉(zhuǎn)換成大寫字母 |
剪切和粘貼文本:
搜索歷史命令:
在任何時(shí)候,我們都可以瀏覽歷史列表的內(nèi)容,通過(guò):
[me@linuxbox ~]$ history | less比方說(shuō)我們想要找到列出目錄/usr/bin 內(nèi)容的命令。一種方法,我們可以這樣做:
[me@linuxbox ~]$ history | grep /usr/bin比方說(shuō)在我們的搜索結(jié)果之中,我們得到一行,包含了有趣的命令,像這樣;
88 ls -l /usr/bin > ls-output.txt數(shù)字 “88” 是這個(gè)命令在歷史列表中的行號(hào)。隨后在使用另一種展開(kāi)類型時(shí),叫做歷史命令展開(kāi),我們會(huì)用到這個(gè)數(shù)字。我們可以這樣做,來(lái)使用我們所發(fā)現(xiàn)的行:
[me@linuxbox ~]$ !88bash 也具有按遞增順序來(lái)搜索歷史列表的能力。這意味著隨著字符的輸入,我們可以告訴 bash 去搜索歷史列表,每一個(gè)附加字符都進(jìn)一步提煉我們的搜索。啟動(dòng)遞增搜索,們可以告訴 bash 去搜索歷史列表,每一個(gè)附加字符都進(jìn)一步提煉我們的搜索。啟動(dòng)遞增搜索,輸入 Ctrl-r,其后輸入你要尋找的文本。當(dāng)你找到它以后,你可以敲入 Enter 來(lái)執(zhí)行命令,或者輸入 Ctrl-j,從歷史列表中復(fù)制這一行到當(dāng)前命令行。再次輸入 Ctrl-r,來(lái)找到下一個(gè)匹配項(xiàng)(向上移動(dòng)歷史列表)。輸入 Ctrl-g 或者 Ctrl-c,退出搜索。
首先輸入 Ctrl-r:
(reverse-i-search)`':提示符改變,顯示我們正在執(zhí)行反向遞增搜索。搜索過(guò)程是 “反向的”,因?yàn)槲覀儼凑諒摹爆F(xiàn)在” 到過(guò)去某個(gè)時(shí)間段的順序來(lái)搜尋。下一步,我們開(kāi)始輸入要查找的文本。在這個(gè)例子里是 “/usr/bin”:
(reverse-i-search)`/usr/bin': ls -l /usr/bin > ls-output.txt即刻,搜索返回我們需要的結(jié)果。我們可以執(zhí)行這個(gè)命令,按下 Enter 鍵,或者我們可以復(fù)制這個(gè)命令到我們當(dāng)前的命令行,來(lái)進(jìn)一步編輯它,輸入 Ctrl-j。復(fù)制它,輸入 Ctrl-j:
[me@linuxbox ~]$ ls -l /usr/bin > ls-output.txt歷史命令展開(kāi):
| 序列 | 行為 |
| !! | 重復(fù)最后一次執(zhí)行的命令 |
| !number | 重復(fù)歷史列表中第 number 行的命令 |
| !string | 重復(fù)最近歷史列表中,以這個(gè)字符串開(kāi)頭的命令 |
| !?string | 重復(fù)最近歷史列表中,包含這個(gè)字符串的命令 |
?權(quán)限:
擁有者,組成員,和其他人:
可以用 id 命令,來(lái)找到關(guān)于你自己身份的信息:
hlk@hlk-Lenovo-XiaoXin-700-15ISK:~$ id uid=1000(hlk) gid=1000(hlk) 組=1000(hlk),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)當(dāng)用戶創(chuàng)建帳戶之后,系統(tǒng)會(huì)給用戶分配一個(gè)號(hào)碼,叫做用戶 ID或者 uid,然后,為了符合人類的習(xí)慣,這個(gè) ID 映射到一個(gè)用戶名。系統(tǒng)又會(huì)給這個(gè)用戶分配一個(gè)原始的組 ID 或者是 gid,這個(gè) gid 可能屬于另外的組。
用戶帳戶定義在/etc/passwd 文件里面,用戶組定義在/etc/group 文件里面。當(dāng)用戶帳戶和用戶組創(chuàng)建以后,這些文件隨著文件/etc/shadow 的變動(dòng)而修改,文件/etc/shadow 包含了關(guān)于用戶密碼的信息。對(duì)于每個(gè)用戶帳號(hào),文件/etc/passwd 定義了用戶(登錄)名,uid,gid,帳號(hào)的真實(shí)姓名,主目錄,和登錄 shell。
讀取,寫入,和執(zhí)行:
對(duì)于文件和目錄的訪問(wèn)權(quán)力是根據(jù)讀訪問(wèn),寫訪問(wèn),和執(zhí)行訪問(wèn)來(lái)定義的。
hlk@hlk-Lenovo-XiaoXin-700-15ISK:~$ >foo.txt hlk@hlk-Lenovo-XiaoXin-700-15ISK:~$ ls -l foo.txt -rw-rw-r-- 1 hlk hlk 0 9月 2 16:35 foo.txt列表的前十個(gè)字符是文件的屬性。這十個(gè)字符的第一個(gè)字符表明文件類型。如下表所示:
| 屬性 | 文件類型 |
| - | 一個(gè)普通文件 |
| d | 一個(gè)目錄 |
| l | 一 個(gè) 符 號(hào) 鏈 接。注 意 對(duì) 于 符 號(hào) 鏈 接 文 件,剩 余 的 文 件 屬 性 總是”rwxrwxrwx”,而且都是虛擬值。真正的文件屬性是指符號(hào)鏈接所指向的文件的屬性 |
| c | 一個(gè)字符設(shè)備文件。這種文件類型是指按照字節(jié)流,來(lái)處理數(shù)據(jù)的設(shè)備。比如說(shuō)終端機(jī),或者調(diào)制解調(diào)器 |
| b | 一個(gè)塊設(shè)備文件。這種文件類型是指按照數(shù)據(jù)塊,來(lái)處理數(shù)據(jù)的設(shè)備,例如一個(gè)硬盤,或者 CD-ROM 盤 |
剩下的九個(gè)字符,叫做文件模式,代表著文件所有者,文件組所有者,和其他人的讀,寫,執(zhí)行權(quán)限。
chmod -更改文件模式:
更改文件或目錄的模式(權(quán)限),可以利用 chmod 命令。注意只有文件的所有者或者超級(jí)用戶才能更改文件或目錄的模式。chmod 命令支持兩種不同的方法來(lái)改變文件模式:八進(jìn)制數(shù)字表示法,或符號(hào)表示法。
| Octal | Binary | File Mode |
| 0 | 000 | --- |
| 1 | 001 | --x |
| 2 | 010 | -w- |
| 3 | 011 | -wx |
| 4 | 100 | r-- |
| 5 | 101 | r-x |
| 6 | 110 | rw- |
| 7 | 111 | rwx |
通過(guò)使用 3 個(gè)八進(jìn)制數(shù)字,我們能夠設(shè)置文件所有者,用戶組,和其他人的權(quán)限
[me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-r-- 1 me me 0 2008-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw------- 1 me me 0 2008-03-06 14:52 foo.txtchmod 命令支持一種符號(hào)表示法,來(lái)指定文件模式。符號(hào)表示法分為三部分:更改會(huì)影響誰(shuí),要執(zhí)行哪個(gè)操作,要設(shè)置哪種權(quán)限。通過(guò)字符“u”,“g”,“o”,and “a”的組合來(lái)指定要影響的對(duì)象,如下所示:
| u | “user”的簡(jiǎn)寫,意思是文件或目錄的所有者 |
| g | 用戶組 |
| o | “others”的簡(jiǎn)寫,意思是其他所有的人 |
| a | “all”的簡(jiǎn)寫,是“u”,“g”,和“o”三者的聯(lián)合 |
如果沒(méi)有指定字符,則假定使用“all”。執(zhí)行的操作可能是一個(gè)“+”字符,表示加上一個(gè)權(quán)限,一個(gè)“-”,表示刪掉一個(gè)權(quán)限,或者是一個(gè)“=”,表示只有指定的權(quán)限可用,其它所有的權(quán)限被刪除。
權(quán)限由“r”, “w”, and “x”來(lái)指定。這里是一些符號(hào)表示法的實(shí)例:
| u+x | 為文件所有者添加可執(zhí)行權(quán)限 |
| u-x | 刪除文件所有者的可執(zhí)行權(quán)限 |
| +x | 為文件所有者,用戶組,和其他所有人添加可執(zhí)行權(quán)限。等價(jià)于 a+x |
| o-rw | 除了文件所有者和用戶組,刪除其他人的讀權(quán)限和寫權(quán)限 |
| go=rw | 給群組的主人和任意文件擁有者的人讀寫權(quán)限。如果群組的主人或全局之前已經(jīng)有了執(zhí)行的權(quán)限,他們將被移除 |
| u+x,go=rw | 給文件擁有者執(zhí)行權(quán)限并給組和其他人讀和執(zhí)行的權(quán)限。多種設(shè)定可以用逗號(hào)分開(kāi) |
要注意“--recursive”選項(xiàng):它可以同時(shí)作用于文件和目錄
umask -設(shè)置默認(rèn)權(quán)限
當(dāng)創(chuàng)建一個(gè)文件時(shí),umask 命令控制著文件的默認(rèn)權(quán)限。umask 命令使用八進(jìn)制表示法來(lái)表達(dá)從文件模式屬性中刪除一個(gè)位掩碼。
[me@linuxbox ~]$ rm -f foo.txt [me@linuxbox ~]$ umask 0002 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-r-- 1 me me 0 2008-03-06 14:53 foo.txt當(dāng)掩碼設(shè)置為 0000(實(shí)質(zhì)上是關(guān)掉它)之后,我們看到其他人能夠讀寫文件。
[me@linuxbox ~]$ rm foo.txt [me@linuxbox ~]$ umask 0000 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-rw- 1 me me 0 2008-03-06 14:58 foo.txt| Original file mode | --- rw- rw- rw- |
| Mask | 000 000 000 010 |
| Result | --- rw- rw- r-- |
su -以其他用戶身份和組 ID 運(yùn)行一個(gè) shell:
su [-[l]] [user]如果包含 “-l” 選項(xiàng),那么會(huì)為指定用戶啟動(dòng)一個(gè)需要登錄的 shell。這意味著會(huì)加載此用戶的 shell 環(huán)境,并且工作目錄會(huì)更改到這個(gè)用戶的主目錄。這通常是我們所需要的。如果不指定用戶,那么就假定是超級(jí)用戶。注意(不可思議地),選項(xiàng) “-l” 可以縮寫為”-”,這是經(jīng)常用到的形式。
也可以只執(zhí)行單個(gè)命令,而不是啟動(dòng)一個(gè)新的可交互的 shell:
su -c 'command'使用這種模式,命令傳遞到一個(gè)新 shell 中執(zhí)行。把命令用單引號(hào)引起來(lái)很重要,因?yàn)槲覀儾幌朊钤谖覀兊?shell 中展開(kāi),但需要在新 shell 中展開(kāi)。
[me@linuxbox ~]$ su -c 'ls -l /root/*'sudo -以另一個(gè)用戶身份執(zhí)行命令:
管理員能夠配置 sudo 命令,從而允許一個(gè)普通用戶以不同的身份(通常是超級(jí)用戶),通過(guò)一種非常可控的方式來(lái)執(zhí)行命令。尤其是,只有一個(gè)用戶可以執(zhí)行一個(gè)或多個(gè)特殊命令時(shí),(更體現(xiàn)了 sudo命令的方便性)。另一個(gè)重要差異是 sudo 命令不要求超級(jí)用戶的密碼。使用 sudo 命令時(shí),用戶使用他/她自己的密碼來(lái)認(rèn)證。
su 和 sudo 之間的一個(gè)重要區(qū)別是 sudo 不會(huì)重新啟動(dòng)一個(gè) shell,也不會(huì)加載另一個(gè)用戶的 shell 運(yùn)行環(huán)境。這意味者命令不必用單引號(hào)引起來(lái)。
chown -更改文件所有者和用戶組:
chown 命令被用來(lái)更改文件或目錄的所有者和用戶組。使用這個(gè)命令需要超級(jí)用戶權(quán)限。chown 命令的語(yǔ)法看起來(lái)像這樣:
chown [owner][:[group]] file..chown 命令可以更改文件所有者和/或文件用戶組,依據(jù)于這個(gè)命令的第一個(gè)參數(shù)。
chgrp -更改用戶組所有權(quán):
更改用戶密碼:
passwd [user]?
shell 環(huán)境:
linux下的變量:
shell 在環(huán)境中存儲(chǔ)了兩種基本類型的數(shù)據(jù)。它們是環(huán)境變量和 shell 變量。Shell 變量是由 bash 存放的一很少數(shù)據(jù),而環(huán)境變量基本上就是其它的所有數(shù)據(jù)。除了變量,shell 也存儲(chǔ)了一些可編程的數(shù)據(jù),命名為別名和shell 函數(shù)。
檢查環(huán)境變量:
set命令可以顯示 shell 和環(huán)境變量?jī)烧?#xff0c;而 printenv 只是顯示環(huán)境變量。
printenv 命令也能夠列出特定變量的數(shù)值:
[me@linuxbox ~]$ printenv USER me當(dāng)使用沒(méi)有帶選項(xiàng)和參數(shù)的 set 命令時(shí),shell 和環(huán)境變量二者都會(huì)顯示,同時(shí)也會(huì)顯示定義的 shell 函數(shù)。不同于 printenv 命令,set 命令的輸出結(jié)果很禮貌地按照字母順序排列。
也可以通過(guò) echo 命令來(lái)查看一個(gè)變量的內(nèi)容。
[me@linuxbox ~]$ echo $HOME /home/me如果 shell 環(huán)境中的一個(gè)成員既不可用 set 命令也不可用 printenv 命令顯示,則這個(gè)變量是別名。輸入不帶參數(shù)的 alias 命令來(lái)查看它們。
如何建立 shell 環(huán)境:
當(dāng)我們登錄系統(tǒng)后,啟動(dòng) bash 程序,并且會(huì)讀取一系列稱為啟動(dòng)文件的配置腳本,這些文件定義了默認(rèn)的可供所有用戶共享的 shell 環(huán)境。然后是讀取更多位于我們自己主目錄中的啟動(dòng)文件,這些啟動(dòng)文件定義了用戶個(gè)人的 shell 環(huán)境。精確的啟動(dòng)順序依賴于要運(yùn)行的 shell 會(huì)話類型。有兩種 shell 會(huì)話類型:一個(gè)是登錄 shell 會(huì)話,另一個(gè)是非登錄 shell 會(huì)話。登錄 shell 會(huì)話會(huì)提示用戶輸入用戶名和密碼。
登錄 shell 會(huì)讀取一個(gè)或多個(gè)啟動(dòng)文件:
| 文件 | 內(nèi)容 |
| /etc/profile? | 應(yīng)用于所有用戶的全局配置腳本 |
| ?/.bash_profile | 用戶私人的啟動(dòng)文件。可以用來(lái)擴(kuò)展或重寫全局配置腳本中的設(shè)置 |
| ?/.bash_login | 如果文件 ?/.bash profile 沒(méi)有找到,bash 會(huì)嘗試讀取這個(gè)腳本 |
| ?/.profile | 如果文件 ?/.bash profile 或文件 ?/.bash login 都沒(méi)有找到,bash 會(huì)試圖讀取這個(gè)文件。這是基于 Debian 發(fā)行版的默認(rèn)設(shè)置 |
非登錄 shell 會(huì)話會(huì)讀取以下啟動(dòng)文件:
| 文件 | 內(nèi)容 |
| /etc/bash.bashrc | 應(yīng)用于所有用戶的全局配置文件 |
| ?/.bashrc | 用戶私有的啟動(dòng)文件。可以用來(lái)擴(kuò)展或重寫全局配置腳本中的設(shè)置 |
除了讀取以上啟動(dòng)文件之外,非登錄 shell 會(huì)話也會(huì)繼承它們父進(jìn)程的環(huán)境設(shè)置,通常是一個(gè)登錄 shell。
我們應(yīng)該修改哪個(gè)文件:
按照通常的規(guī)則,添加目錄到你的 PATH 變量或者是定義額外的環(huán)境變量,要把這些更改放置到.bash profile 文件中(或者其替代文件中,根據(jù)不同的發(fā)行版。例如,Ubuntu 使用.profile 文件)。對(duì)于其它的更改,要放到.bashrc 文件中。
激活我們的修改:
我們對(duì)于文件.bashrc 的修改不會(huì)生效,直到我們關(guān)閉終端會(huì)話,再重新啟動(dòng)一個(gè)新的會(huì)話,因?yàn)?bashrc 文件只是在剛開(kāi)始啟動(dòng)終端會(huì)話時(shí)讀取。然而,我們可以強(qiáng)迫 bash 重新讀取修改過(guò)的.bashrc 文件,使用下面的命令:
[me@linuxbox ~]$ source .bashrc?
轉(zhuǎn)載于:https://www.cnblogs.com/hlk09/p/9574113.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的The Linux Command Line读书笔记(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaScript 数字转汉字+ele
- 下一篇: Django-分页扩展