Learn about bash? shell? (一)

1. 什麼是shell?
=> 

在system call之外的應用程式,都是shell(廣義)

2. 什麼是bash?
常聽到的 Bourne SHell (sh) 、在 Sun 裡頭預設的 C SHell、 商業上常用的 K SHell、, 還有 TCSH 等等,每一種 Shell 都各有其特點
-> Bourne Again SHell (簡稱 bash)

3. 為什麼要用bash?
優點:
1) 能查詢history(之前在資工系用的工作站就不支援查詢,每次指令都要重打,超煩XD)
=> less ~/.bash_history
裡面有之前輸入過的指令(被駭客取得root權限後,查看裡面就可能得知某某伺服器帳密)

2) tab補足指令或檔案名稱(完全是福音,使用沒有tab補足功能的shell會死掉哈哈)
tab按一下:補足指令或檔名
tab按兩下:顯示接下來有哪些選項是符合的

3) alias指令別名(可以把常使用的指令設成更簡單好懂好打的方式)
=> alias lm = ‘ls -al’

4) job control, background, foreground

5) shell script 程式化腳本(批次檔的感覺,把一連串的連續指令寫成script,之後只要執行script就不用一行一行keyin)

6) wildcard 萬用字元

4. 查詢某指令是否為bash shell內建命令
-> type [-tpa] command
ex. type -t ls

herongsendeMacBook-Air:~ RongSonHo$ type -t ls
file

顯示file -> 外部命令
顯示alias -> 別名
顯示builtin -> 內建命令
-p: 若command為外部命令時,會顯示完整檔案路徑

herongsendeMacBook-Air:~ RongSonHo$ type -p ls
/bin/ls

-a: 把$PATH中,含有command的指令都列出來
ex. type -a pwd

herongsendeMacBook-Air:~ RongSonHo$ type -a pwd
pwd is a shell builtin

pwd is /bin/pwd

ps. which指令,也有類似的功能哦

5. $PATH 環境變數在幹麻的?
=> 當我們在終端機輸入指令後,shell會到$PATH中的資料夾中尋找相對應的指令,若找不到指令就執行不了。

herongsendeMacBook-Air:~ RongSonHo$ echo $PATH
/Users/RongSonHo/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

6. 如何改變命令提示字元的預設顯示呢?
herongsendeMacBook-Air:~ RongSonHo$ 
改變PS1這個環境變數
我的PS1長這樣:

herongsendeMacBook-Air:~ RongSonHo$ echo $PS1
h:W u$



但直接修改PS1只會在當個tty改變

7. 如何永久改變PS1?
=> cd ~
=> ls -a
=> vim .bash_profile
=>

if which rbenv > /dev/null; then eval “$(rbenv init -)”; fi
export PS1='[就決定是你了,帥榮森! t: W ]$ ‘

參考:
1. 鳥哥:
http://linux.vbird.org/linux_basic/0320bash.php#ps2

作者

RongSon

Graduate Student of CCU COMM Game Development, Network Communication, macOS/Ubuntu/Android, Arduino/Raspberry Pi/Intel Edison, Java/Python/C/C++

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *