久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      shell 初步之運(yùn)行方式

      Shell的作用是解釋執(zhí)行用戶的命令,用戶輸入一條命令,Shell就解釋執(zhí)行一條,這種方式稱為交互式(Interactive),Shell還有一種執(zhí)行命令的方式稱為批處理(Batch,類似與windows 下的批處理.bat 文件),用戶事先寫一個(gè)Shell腳本(Script),其中有很多條命令,讓Shell一次把這些命令執(zhí)行完,而不必一條一條地敲命令。Shell腳本和編程語(yǔ)言很相似,也有變量和流程控制語(yǔ)句,但Shell腳本是解釋執(zhí)行的,不需要編譯,Shell程序從腳本中一行一行讀取并執(zhí)行這些命令,相當(dāng)于一個(gè)用戶把腳本中的命令一行一行敲到Shell提示符下執(zhí)行。

      常見(jiàn)的 Shell 有 sh、bash、csh、tcsh、ash 等。

      shell 是一個(gè)程序,一般都是放在/bin 或者/user/bin目錄下,當(dāng)前l(fā)inux 系統(tǒng)可用的shell 都記錄在/etc/shells文件中。如果你希望查看當(dāng)前 Linux 的默認(rèn) Shell,那么可以輸出 SHELL 環(huán)境變量:

      echo $SHELL

      vim /etc/passwd
      其中最后一列顯示了用戶對(duì)應(yīng)的shell類型

      root:x:0:0:root:/root:/bin/bash
      saned:x:119:127::/var/lib/saned:/bin/false
      usbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
      zhang:x:1000:1000:zhang,,,:/home/zhang:/bin/bash
      mysql:x:1001:1001::/home/mysql:/sbin/nologin
      www:x:1002:1002::/home/www:/sbin/nologin
      referee:x:1003:1003::/home/referee:/bin/sh

      shell 初步之運(yùn)行方式

      用戶在命令行輸入命令后,一般情況下Shell會(huì)fork并exec該命令,但是Shell的內(nèi)建命令例外,執(zhí)行內(nèi)建命令相當(dāng)于調(diào)用Shell進(jìn)程中的一個(gè)函數(shù),并不創(chuàng)建新的進(jìn)程。以c常用的cd、alias、umask、exit等命令即是內(nèi)建命令,凡是用which命令查不到程序文件所在位置的命令都是內(nèi)建命令,內(nèi)建命令沒(méi)有單獨(dú)的man手冊(cè),要在man手冊(cè)中查看內(nèi)建命令,應(yīng)該執(zhí)行

        man bash-builtins

      或者

        man builtins

      shell 運(yùn)行方式

      當(dāng) shell 腳本以非交互的方式運(yùn)行時(shí),它會(huì)先查找環(huán)境變量ENV,該變量指定了一個(gè)環(huán)境文件(通常是. bashrc),然后從該環(huán)境變量文件開(kāi)始執(zhí)行,當(dāng)讀取了ENV文件后,SHELL才開(kāi)始執(zhí)行 shell 腳本中的內(nèi)容。 shell腳本的執(zhí)行通??梢圆捎靡韵氯N方式:

      bash script-name或 sh script-name(推薦使用) path/ script-name或 ./script-name(當(dāng)前路徑下執(zhí)行腳本) source script-name或. script-name#一注意“.”點(diǎn)號(hào)和script-name 之間有空格。

      執(zhí)行說(shuō)明:

      第一種方法是當(dāng)腳本文件本身沒(méi)有可執(zhí)行權(quán)限(即文件x位為-號(hào))時(shí)常使用的方法,這里推薦用bash執(zhí)行,或者文件開(kāi)頭沒(méi)有指定解釋器。

      第二種方法需要先將腳本文件的權(quán)限改為可執(zhí)行(即文件加x位),具體方法: chmod u+x script-name或 chmod755 script-name,然后通過(guò)腳本路徑就可以直接執(zhí)行腳本了。

      第三種方法通常是使用source 或者 “.”號(hào)讀入或加載指定的shell 腳本文件(son.sh),然后,依次執(zhí)行該指定shell 腳本文件son.sh 中的所有的語(yǔ)句。這些語(yǔ)句將作為當(dāng)前父shell 腳本father.sh 進(jìn)程的一部分運(yùn)行。因此,使用source 或者”.” 號(hào)可以將子shell(son.sh) 自身腳本中的變量的值或者函數(shù)等的返回值傳遞到當(dāng)前父shell 腳本(father.sh) 中使用。這是第三種方法和前兩種方法的最大區(qū)別,在linux 中很多配置文件修改后就是直接source 執(zhí)行的。

      source 或者 “.” 點(diǎn)號(hào)命令的功能是在當(dāng)前shell 中執(zhí)行source 或者”.” 點(diǎn)號(hào)加載并執(zhí)行的相關(guān)腳本文件中的命令及語(yǔ)句,而不是產(chǎn)生一個(gè)子shell 來(lái)執(zhí)行命令文件中的命令。

        zhang@zhang:~/Code/Shell$ cat exec_method.sh  #! /bin/bash    echo "set varriable begin...."  current_dir=`pwd`    echo "set varriable end..."    echo "current dir is : "$current_dir  zhang@zhang:~/Code/Shell$ /bin/bash exec_method.sh  set varriable begin....  set varriable end...  current dir is : /home/zhang/Code/Shell  zhang@zhang:~/Code/Shell$ echo $current_dir    zhang@zhang:~/Code/Shell$ chmod u+x exec_method.sh  zhang@zhang:~/Code/Shell$ ./exec_method.sh  set varriable begin....  set varriable end...  current dir is : /home/zhang/Code/Shell  zhang@zhang:~/Code/Shell$ echo $current_dir    zhang@zhang:~/Code/Shell$ . exec_method.sh  set varriable begin....  set varriable end...  current dir is : /home/zhang/Code/Shell  zhang@zhang:~/Code/Shell$ echo $current_dir  /home/zhang/Code/Shell  zhang@zhang:~/Code/Shell$

      shell 初步之運(yùn)行方式

      由上面執(zhí)行結(jié)果可以看出,. 或 source 方式執(zhí)行腳本與前面兩種執(zhí)行方式的不同點(diǎn)–以這種方式執(zhí)行的腳本中聲明的變量, 都可以在當(dāng)前shell 中得以繼續(xù)使用,使用.(點(diǎn)號(hào))方式的時(shí)候一定要注意,點(diǎn)號(hào)和執(zhí)行腳本之間的空格。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)