十年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
      南昌百恒網(wǎng)絡(luò)微信公眾號 掃一掃關(guān)注
      小程序
      tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
      掃一掃打開百恒網(wǎng)絡(luò)微信小程序

      百恒網(wǎng)絡(luò)

      南昌百恒網(wǎng)絡(luò)

      dash shell的特性

      百恒網(wǎng)絡(luò) 2017-04-08 7053

      雖然bash shell是Linux發(fā)行版中最廣泛使用的shell,但它并不是唯一的選擇。現(xiàn)在基本已經(jīng)了解了標(biāo)準(zhǔn)的Linux bash shell,知道了能用它做什么,是時候看看Linux世界中的其他一些shell了。接下來南昌APP制作開發(fā)公司小編將會介紹另外兩個可能會碰到的shell,以及它們與bash shell有什么區(qū)別。
      ? ? ? ?1.什么是 dash shell
      ? ? ? ?Debian的dash shell的歷史很有趣。它是ash shell的直系后代,而ash shell則是Unix系統(tǒng)上原來的Bourne shell的簡化版本。Kenneth Almquist為Unix系統(tǒng)開發(fā)了一個Bourne shell的簡化版本,并將它命名為Almquist shell,縮寫為ash。ash shell最早的版本體積極小、速度奇快,但缺乏許多高級功能,比如命令行編輯或命令使用記錄功能,這使它很難用作交互式shell。
      ? ? ? ?NetBSD Unix操作系統(tǒng)移植了ash shell,直到今天依然將它用作默認(rèn)shell。NetBSD開發(fā)人員對ash shell進(jìn)行了定制,增加了一些新的功能,使它更接近Bourne shell。新功能包括使用emacs
      ? ? ? ?和vi編輯器命令進(jìn)行命令行編輯,利用歷史命令來查看先前輸入的命令。ash shell的這個版本也被FreeBSD操作系統(tǒng)用作默認(rèn)登錄shell。
      ? ? ? ?Debian Linux發(fā)行版創(chuàng)建了它自己的ash shell版本(稱Debian ash,或dash)以供自用。dash復(fù)制了ash shell的NetBSD版本的大多數(shù)功能,提供了一些高級命令行編輯能力。
      ? ? ? ?但令人不解的是,實(shí)際上dash shell在許多基于Debian的Linux發(fā)行版中并不是默認(rèn)的shell。由于bash shell在Linux中的流行,大多數(shù)基于Debian的Linux發(fā)行版將bash shell用作普通登錄shell,而只將dash shell作為安裝腳本的快速啟動shell,用于安裝發(fā)行版文件。
      ? ? ? ?流行的Ubuntu發(fā)行版是例外。這經(jīng)常讓shell腳本程序員摸不清頭腦,給Linux環(huán)境中運(yùn)行shell腳本帶來了很多問題。Ubuntu Linux發(fā)行版將bash shell用作默認(rèn)的交互shell,但dash shell用作默認(rèn)的 /bin/sh? shell。這個“特性”著實(shí)讓shell腳本程序員一頭霧水。
      ? ? ? ?每個shell腳本的起始行都必須聲明腳本所用的shell。在bash shell腳本中,我們一直用下面的行。
      #!/bin/bash
      ? ? ? ?它會告訴shell使用位于/bin/bash的shell程序來執(zhí)行腳本。在Unix世界中,默認(rèn)shell一直是/bin/sh。許多熟悉Unix環(huán)境的shell腳本程序員會將這種用法帶到他們的Linux shell腳本中。
      #!/bin/sh
      ? ? ? ?在大多數(shù)Linux發(fā)行版上,/bin/sh文件是鏈接到shel程序/bin/bash的一個符號鏈接。這樣你就可以在無需修改的情況下,輕松地將為Unix Bourne shell設(shè)計的shell腳本移植到Linux環(huán)境中。
      ? ? ? ?很遺憾,Ubuntu Linux發(fā)行版將/bin/sh文件鏈接到了shell程序/bin/dash。由于dash shell只含有原來Bourne shell中的一部分命令,這可能會(而且經(jīng)常會)讓有些shell腳本無法正確工作。
      ? ? ? ?以后將逐步了解dash shell的基礎(chǔ)知識以及它跟bash shell的區(qū)別。如果你編寫的bash shell腳本可能要在Ubuntu環(huán)境中運(yùn)行,了解這些內(nèi)容就尤其重要。
      ? ? ? ?2.dash shell 的特性
      ? ? ? ?盡管bash shell和dash shell都以Bourne shell為樣板,但它們還是有一些差別的。在深入了解shell腳本編程特性之前,將會帶你了解Debian dash shell的一些特性,以便讓你熟悉dash shell的工作方式。
      ? ? ? ?2.1 dash 命令行參數(shù)
      ? ? ? ?dash shell使用命令行參數(shù)來控制其行為。下列表中列出了命令行參數(shù),并介紹了每個參數(shù)的用途。

      dash命令行參數(shù)

      dash命令行參數(shù)

      ? ? ? ?除了原先的ash shell的命令行參數(shù)外,Debian還加入了另外一些命令行參數(shù)。 -E 和 -V 命令行參數(shù)會啟用dash shell特有的命令行編輯功能。
      ? ? ? ?-E 命令行參數(shù)允許使用emacs編輯器命令進(jìn)行命令行文本編輯。你可以使用所有的emacs命令來處理一行中的文本,其中會用到Ctrl和Meta組合鍵。
      ? ? ? ?-V 命令行參數(shù)允許使用vi編輯器命令進(jìn)行命令行文本編輯。這個功能允許用Esc鍵在普通模式和vi編輯器模式之間切換。當(dāng)你在vi模式中時,可以用標(biāo)準(zhǔn)的vi編輯器命令(例如, x 刪除一個字符, i 插入文本)。完成命令行編輯后,必須再次按下Esc鍵退出vi編輯器模式。
      ? ? ? ?2.2 dash 環(huán)境變量
      ? ? ? ?dash shell用相當(dāng)多的默認(rèn)環(huán)境變量來記錄信息,你也可以創(chuàng)建自己的環(huán)境變量。將會介紹環(huán)境變量以及dash如何處理它們。
      ? ? ? ?(1). 默認(rèn)環(huán)境變量
      ? ? ? ?dash環(huán)境變量跟bash環(huán)境變量很像(參見第6章)。這絕非偶然。別忘了dash shell和bash shell都是Bourne shell的擴(kuò)展版,兩者都吸收了很多Bourne shell的特性。不過,由于dash的目標(biāo)是簡潔,因此它的環(huán)境變量比bash shell少多了。在dash shell環(huán)境中編寫腳本時要記住這點(diǎn)。
      ? ? ? ?dash shell用 set 命令來顯示環(huán)境變量。
      $set
      COLORTERM=''
      DESKTOP_SESSION='default'
      DISPLAY=':0.0'
      DM_CONTROL='/var/run/xdmctl'
      GS_LIB='/home/atest/.fonts'
      HOME='/home/atest'
      IFS='
      '
      KDEROOTHOME='/root/.kde'
      KDE_FULL_SESSION='true'
      KDE_MULTIHEAD='false'
      KONSOLE_DCOP='DCOPRef(konsole-5293,konsole)'
      KONSOLE_DCOP_SESSION='DCOPRef(konsole-5293,session-1)'
      LANG='en_US'
      LANGUAGE='en'
      LC_ALL='en_US'
      LOGNAME='atest'
      OPTIND='1'
      PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
      PPID='5293'
      PS1='$ '
      PS2='> '
      PS4='+ '
      PWD='/home/atest'
      SESSION_MANAGER='local/testbox:/tmp/.ICE-unix/5051'
      SHELL='/bin/dash'
      SHLVL='1'
      TERM='xterm'
      USER='atest'
      XCURSOR_THEME='default'
      _='ash'
      $
      ? ? ? ?這和你的默認(rèn)dash shell環(huán)境很可能會不一樣,因?yàn)椴煌腖inux發(fā)行版在登錄時分配的默認(rèn)環(huán)境變量不同。
      ? ? ? ?(2). 位置參數(shù)
      ? ? ? ?除了默認(rèn)環(huán)境變量,dash shell還給命令行上定義的參數(shù)分配了特殊變量。下面是dash shell中用到的位置參數(shù)變量。

      ? ? ? ?所有dash的位置參數(shù)都類似于bash shell中的位置參數(shù)。可以在shell腳本中使用位置參數(shù),就和bash shell中的用法一樣。
      ? ? ? ?(3). 用戶自定義的環(huán)境變量
      ? ? ? ?dash shell還允許定義自己的環(huán)境變量。與bash一樣,你可以在命令行上用賦值語句來定義新的環(huán)境變量。
      $ testing=10 ; export testing
      $ echo $testing
      10
      $
      ? ? ? ?如果不用 export 命令,用戶自定義的環(huán)境變量就只在當(dāng)shell或進(jìn)程中可見。
      ? ? ? ?警告 dash變量和bash變量之間有一個巨大的差異。dash shell不支持?jǐn)?shù)組。這個小特性給高級shell腳本開發(fā)人員帶來了各種問題。
      ? ? ? ?2.3 dash 內(nèi)建命令
      ? ? ? ?跟bash shell一樣,dash shell含有一組它能識別的內(nèi)建命令。你可以在命令行界面上直接使用這些命令,或者將其放到shell腳本中。表中列出了dash shell的內(nèi)建命令。
      dash shell內(nèi)建命令

      dash shell內(nèi)建命令

      dash shell內(nèi)建命令

      ? ? ? ?可能在bash shell中已經(jīng)認(rèn)識了上面的所有內(nèi)建命令。dash shell支持許多和bash shell一樣的內(nèi)建命令。會注意到其中沒有操作命令歷史記錄或目錄棧的命令。dash shell不支持這些特性。
      ? ? ? ?本文僅限內(nèi)部技術(shù)人員學(xué)習(xí)交流,不得作于其他商業(yè)用途.希望此文對廣大技人員有所幫助。原創(chuàng)文章出自:南昌APP制作開發(fā)公司-百恒網(wǎng)絡(luò)


      400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
      掃一掃打開百恒網(wǎng)絡(luò)小程序

      歡迎您的光顧,我們將竭誠為您服務(wù)×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務(wù) 售后服務(wù)
       
      售后服務(wù) 售后服務(wù)
       
      備案專線 備案專線
       
      ×
      亚洲男人的天堂久久精品| 日韩人妻激情制服丝袜另类| 国产精品伦理久久久久久| 亚洲精品免费网站| 国产精品热久久毛片| 久久久不卡国产精品一区二区| 久久久久国产精品三级网| 精品国产一区二区三区香蕉| 国产精品亚洲w码日韩中文 | 久久国产成人精品| 国产成人精品亚洲2020| 国产精品1000夫妇激情啪发布| 国产一成人精品福利网站| 久热这里只有精品12| 中日韩精品无码一区二区三区 | 99re5在线精品视频热线| 国产三级精品三级在专区| 日韩精品人成在线播放| 老司机性色福利精品视频| 尤物在线观看精品国产福利片| 亚洲精品少妇30p| 中文人妻熟妇乱又伦精品 | 国产精品无码专区| 国产精品福利片免费看| 国产精品漂亮美女在线观看| 久久精品国产99国产电影网| 亚欧洲精品在线视频免费观看 | 中文国产成人久久精品小说| 日韩在线观看第一页| 国产精品美女久久久网站| 黄床大片免费30分钟国产精品| 亚洲综合久久精品无码色欲| 精品久久久久久综合日本| 精品国产乱码久久久久久浪潮| 久久99热这里只频精品6| 久久久久久久99精品国产片| 国产乱人伦偷精品视频不卡| 久久久精品无码专区不卡| 国产亚洲精品91| 国产成人精品日本亚洲11| 91人妻人人澡人人爽人人精品|