在Linux或類Unix系統(tǒng)中,每個(gè)用戶和進(jìn)程都運(yùn)行在一個(gè)特定環(huán)境中。這個(gè)環(huán)境包含了變量、設(shè)置、別名、函數(shù)以及更多的東西。下面是對(duì)Shell環(huán)境下一些常用命令的簡(jiǎn)單介紹,包括每個(gè)命令如何使用的例子,以及在命令行下設(shè)定你自己的環(huán)境來(lái)提高效率。

在終端應(yīng)用中輸入下面命令中的任意一個(gè):
ps $$ps -p $$
或者
echo "$0"
輸出范例:

圖1:找出當(dāng)前的shell
找到已安裝shell的完整路徑:
type -a zshtype -a kshtype -a shtype -a bash
輸出范例:

圖2:找出shell的路徑
文件/etc/shells里包含了系統(tǒng)所支持的shell列表。每一行代表一個(gè)shell,是相對(duì)根目錄的完整路徑。用這個(gè)cat命令來(lái)查看這些數(shù)據(jù):
cat /etc/shells
輸出范例:
# List of acceptable shells for chpass(1).# Ftpd will not allow users to connect who are not using# one of these shells. /bin/bash/bin/csh/bin/ksh/bin/sh/bin/tcsh/bin/zsh/usr/local/bin/fish
只需要輸入shell的名字。在下面的例子里,我從bash切換到了zsh:
zsh
這只是臨時(shí)改變了系統(tǒng)shell。也叫做子shell。要從子/臨時(shí)shell退出,輸入下面的命令或者按下CTRL-D:
exit
每個(gè)bash實(shí)例啟動(dòng)后,變量$SHLVL的值都會(huì)加一。輸入下面的命令:
echo "$SHLVL"
示例輸出:

圖3:Bash shell嵌套層級(jí)(子shell數(shù)目)
想要把當(dāng)前系統(tǒng)shell從bash永久換成zsh?試試這個(gè):
chsh -s /bin/zsh
想把其他用戶的shell從bash永久換成ksh?試試這個(gè):
sudo chsh -s /bin/ksh userNameHere
你需要用到:
envenv | moreenv | lessenv | grep 'NAME'
示例輸出:
TERM_PROGRAM=Apple_TerminalSHELL=/bin/bashTERM=xterm-256colorTMPDIR=/var/folders/6x/45252d6j1lqbtyy_xt62h40c0000gn/T/Apple_PubSub_Socket_Render=/tmp/launch-djaOJg/RenderTERM_PROGRAM_VERSION=326TERM_SESSION_ID=16F470E3-501C-498E-B315-D70E538DA825USER=vivekSSH_AUTH_SOCK=/tmp/launch-uQGJ2h/Listeners__CF_USER_TEXT_ENCODING=0x1F5:0:0PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/go/bin:/usr/local/sbin/modemZapp:/Users/vivek/google-cloud-sdk/bin__CHECKFIX1436934=1PWD=/Users/vivekSHLVL=2HOME=/Users/vivekLOGNAME=vivekLC_CTYPE=UTF-8DISPLAY=/tmp/launch-6hNAhh/org.macosforge.xquartz:0_=/usr/bin/envOLDPWD=/Users/vivek
新聞熱點(diǎn)
疑難解答
網(wǎng)友關(guān)注