Ubuntu系統(tǒng)下bash和dash的區(qū)別
GNU/Linux 操作系統(tǒng)中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符號(hào)鏈接,但鑒于 bash 過(guò)于復(fù)雜,有人把 ash 從 NetBSD 移植到 Linux 并更名為 dash (Debian Almquist Shell),并建議將 /bin/sh 指向它,以獲得更快的腳本執(zhí)行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX標(biāo)準(zhǔn)。
Debian和Ubuntu中,/bin/sh默認(rèn)已經(jīng)指向dash,這是一個(gè)不同于bash的shell,它主要是為了執(zhí)行腳本而出現(xiàn),而不是交互,它速度更快,但功能相比bash要少很多,語(yǔ)法嚴(yán)格遵守POSIX標(biāo)準(zhǔn)。
語(yǔ)法上的主要的區(qū)別有:
1.定義函數(shù)
bash: function在bash中為關(guān)鍵字
dash: dash中沒(méi)有function這個(gè)關(guān)鍵字
2.select var in list; do command; done
bash:支持
dash:不支持, 替代方法:采用while+read+case來(lái)實(shí)現(xiàn)
3. echo {0..10}
bash:支持{n..m}展開(kāi)
dash:不支持,替代方法, 采用seq外部命令
4. here string
bash:支持here string
dash:不支持, 替代方法:可采用here documents
5. >&word重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤
bash: 當(dāng)word為非數(shù)字時(shí),>&word變成重定向標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出到文件word
dash: >&word, word不支持非數(shù)字, 替代方法: >word 2>&1; 常見(jiàn)用法 >/dev/null 2>&1
6. 數(shù)組
bash: 支持?jǐn)?shù)組, bash4支持關(guān)聯(lián)數(shù)組
dash: 不支持?jǐn)?shù)組,替代方法, 采用變量名+序號(hào)來(lái)實(shí)現(xiàn)類(lèi)似的效果
7. 子字符串?dāng)U展
bash: 支持${parameter:offset:length},${parameter:offset}
dash: 不支持, 替代方法:采用expr或cut外部命令代替
8. 大小寫(xiě)轉(zhuǎn)換
bash: 支持${parameter^pattern},${parameter^^pattern},${parameter,pattern},${parameter,,pattern}
dash: 不支持,替代方法:采用tr/sed/awk等外部命令轉(zhuǎn)換
9. 進(jìn)程替換<(command), >(command)
bash: 支持進(jìn)程替換
dash: 不支持, 替代方法, 通過(guò)臨時(shí)文件中轉(zhuǎn)
10. [ string1 = string2 ] 和 [ string1 == string2 ]
bash: 支持兩者
dash: 只支持=
11. [[ 加強(qiáng)版test
bash: 支持[[ ]], 可實(shí)現(xiàn)正則匹配等強(qiáng)大功能
dash: 不支持[[ ]], 替代方法,采用外部命令
12. for (( expr1 ; expr2 ; expr3 )) ; do list ; done
bash: 支持C語(yǔ)言格式的for循環(huán)
dash: 不支持該格式的for, 替代方法,用while+$((expression))實(shí)現(xiàn)
13. let命令和((expression))
bash: 有內(nèi)置命令let, 也支持((expression))方式
dash: 不支持,替代方法,采用$((expression))或者外部命令做計(jì)算
14. $((expression))
bash: 支持id++,id--,++id,--id這樣到表達(dá)式
dash: 不支持++,--, 替代方法:id+=1,id-=1, id=id+1,id=id-1
Ubuntu系統(tǒng)下bash和dash的區(qū)別
bash: 支持?jǐn)?shù)組, bash4支持關(guān)聯(lián)數(shù)組 dash: 不支持?jǐn)?shù)組,替代方法, 采用變量名+序號(hào)來(lái)實(shí)現(xiàn)類(lèi)似的效果 7. 子字符串?dāng)U展 bash: 支持${parameter:offset:length},${parameter:offset} dash: 不支持, 替代方法:采用expr或cut外部命令代替 8. 大小寫(xiě)轉(zhuǎn)換 bash: 支持${parameter^pattern},${parameter^^p...
Ubuntu系統(tǒng)下bash和dash的區(qū)別
Ubuntu安裝的時(shí)候使用了dash,dash比bash體積小速度快,兼容性高!但是在bash下可以正常運(yùn)行的一些sh在dash下不能使用,造成了一些麻煩。為了解決之,鍵入sudo dpkg-reconfigure dash,重新配置dash,并選擇“no”,即不使用dash。
腳本運(yùn)行異常:bash和dash的區(qū)別
ubuntu下shell腳本運(yùn)行異常:bash和dash的區(qū)別我用bash到語(yǔ)法寫(xiě)了一個(gè)shell腳本(準(zhǔn)確的說(shuō)是把書(shū)上的腳本敲進(jìn)電腦),在ubuntu下,用sh test.sh來(lái)運(yùn)行,但是出現(xiàn)了意料之外到結(jié)果,比如echo -e \/nTest\/n到執(zhí)行就不同,直接用sh test.sh運(yùn)行,會(huì)打印出-e(作為字符串);而直接在終端中輸入echo -e...
DASH shellDash Shell
Dash Shell 是一個(gè)輕量級(jí)的Unix Shell,體積相較于Bash Shell顯著減小,且符合POSIX標(biāo)準(zhǔn)。Debian在追求更小的磁盤(pán)空間占用和更快運(yùn)行速度時(shí),曾將\/bin\/bash替換為\/bin\/dash。然而,這個(gè)改變并非完全順利,因?yàn)樵谀承゜ash shell腳本的兼容性上存在問(wèn)題,并非所有腳本都能在Dash Shell下正常運(yùn)行。Ubuntu作為De...
ubuntu里的終端、shell和dash都是什么概念?我是新手,求賜教
shell提供了一些內(nèi)置命令,也支持調(diào)用外面工具。dash,是ubuntu里默認(rèn)的shell。shell有好多種,除支持默認(rèn)的POSIX標(biāo)準(zhǔn)外還支持不同的擴(kuò)展語(yǔ)法,目前最常用的是bash,很多shell學(xué)習(xí)的教程都是針對(duì)bash的。dash除了不支持?jǐn)?shù)組外,其實(shí)和bash差別也不大。ubuntu里可以將默認(rèn)shell由dash改為bash。
...發(fā)現(xiàn)bin里面sh是dash的鏈接,那么sh和bash功能上什么區(qū)別_百度...
sh是shell的最小實(shí)現(xiàn),基本都是符合POSIX標(biāo)準(zhǔn)的。而bash在POSIX標(biāo)準(zhǔn)基礎(chǔ)上添加了很多擴(kuò)展語(yǔ)法和功能。dash是Ubuntu默認(rèn)的shell,dash與bash的區(qū)別網(wǎng)上一搜就有,我記得有一個(gè)區(qū)別就是dash不支持?jǐn)?shù)組,而bash支持。可以更改Ubuntu的默認(rèn)shell為bash的。如果對(duì)可移植性有要求,寫(xiě)腳本還是盡量遵循POSIX標(biāo)準(zhǔn)的語(yǔ)法...
ubuntu 運(yùn)行.sh文件
運(yùn)行.sh文件可以通過(guò)多種方式實(shí)現(xiàn),理解每種方法有助于更靈活地處理腳本執(zhí)行。以下是幾種常用方法及其區(qū)別:1. **使用 sh 執(zhí)行 使用 `sh` 命令執(zhí)行.sh文件,如 `sh test.sh`,指示系統(tǒng)使用默認(rèn)的 `sh` shell來(lái)運(yùn)行腳本。此方法使用的是被bash替代的shell,盡管腳本可能聲明使用 `#!\/bin\/bash`,...
shell腳本介紹及其常用語(yǔ)法指令
兼容性方面,以使用.\/操作符執(zhí)行腳本為例,如用`echo -e "Hello world!\\n"`運(yùn)行,Ubuntu系統(tǒng)可能輸出`-e Hello world`,因Dash Shell對(duì)bash語(yǔ)法的解釋不同。執(zhí)行權(quán)限則需在執(zhí)行前,通過(guò)`chmod +x \/路徑\/腳本名稱(chēng).sh`確保腳本具有執(zhí)行權(quán)限。而使用`bash 腳本名稱(chēng).sh`指令則無(wú)需此步驟。在shell...
linux 哪個(gè)版本適合初學(xué)者
Linux初學(xué)者通常會(huì)從學(xué)習(xí)shell開(kāi)始,而目前最常見(jiàn)的shell是Bash。Ubuntu現(xiàn)在的版本中默認(rèn)的shell是dash,通過(guò)執(zhí)行命令ls -l \/bin\/sh可以看到sh是一個(gè)指向dash的鏈接。如果希望使用Bash,可以通過(guò)執(zhí)行命令sudo dpkg-reconfigure dash對(duì)已安裝的包進(jìn)行重新配置,在菜單中選擇是否將sh鏈接到dash。選擇“否”即可...
kali linux 為什么創(chuàng)建用戶(hù)時(shí),要將用戶(hù)的默認(rèn)外殼改成bash
因?yàn)閺?ubuntu 6.10 開(kāi)始,ubuntu 就將先前默認(rèn)的bash shell 更換成了dash shell;其表現(xiàn)為 \/bin\/sh 鏈接倒了\/bin\/dash而不是傳統(tǒng)的\/bin\/bash。在終端執(zhí)行 sudo dpkg-reconfigure dash 我認(rèn)為他們都是一類(lèi)Linux 所以就這樣延續(xù)了。另外你是運(yùn)維的話(huà)可以看看Linux 這個(gè)可以試試。建議看看《Linux就該...
相關(guān)評(píng)說(shuō):
正安縣氣動(dòng): ______ 方法/步驟1 確保您使用至少是Windows 10的14316版本. 這種方法只適用于64位版本的Windows 10.打開(kāi)設(shè)置應(yīng)用程序和頭部更新和安全>對(duì)于開(kāi)發(fā). 在這里啟動(dòng)“開(kāi)發(fā)者模式”開(kāi)關(guān),使開(kāi)發(fā)者模式.2 接下來(lái),打開(kāi)控制面板,單擊“程序”,然后單擊“打開(kāi)Windows功能打開(kāi)或關(guān)閉”在程序和功能.在這里啟用“Windows子系統(tǒng)為L(zhǎng)inux(測(cè)試版)”列表中的選項(xiàng),并單擊“確定”.執(zhí)行此操作后,系統(tǒng)會(huì)提示您重新啟動(dòng)計(jì)算機(jī). 點(diǎn)擊“立即重新啟動(dòng)”,以重新啟動(dòng)您的計(jì)算機(jī)和Windows 10將安裝新的功能.
正安縣氣動(dòng): ______ 工具:win10系統(tǒng)電腦一臺(tái)步驟: 1、打開(kāi)win10系統(tǒng)電腦,點(diǎn)擊“開(kāi)始”——“設(shè)置”,輸入“特性”.點(diǎn)擊啟用或關(guān)閉 Windows 功能. 2、勾選Windows Subsystem for linux (Beta).點(diǎn)擊確定. 3、將下載、安裝和應(yīng)用相關(guān)的組件,這些操作進(jìn)程結(jié)束后,顯示“立即重新啟動(dòng)”按鈕,點(diǎn)擊它重新啟動(dòng)電腦. 4、在小娜搜索框中鍵入:Bash,小娜頂端出現(xiàn)“Bash 運(yùn)行命令”條目,回車(chē)(或點(diǎn)擊)啟動(dòng)它. 5、提示此 Bash 來(lái)自 Ubuntu,并且需要下載相關(guān)文件,鍵入“Y”將開(kāi)始從微軟商店中下載.在這里鍵入“Y”,下載開(kāi)始. 6、耐心等待一會(huì)兒,Ubuntu 的 Bash 安裝完成.
正安縣氣動(dòng): ______ 有差別的,你可以一個(gè)個(gè)的試下的.1、/etc/profile:在登錄時(shí),操作系統(tǒng)定制用戶(hù)環(huán)境時(shí)使用的第一個(gè)文件,此文件為系統(tǒng)的每個(gè)用戶(hù)設(shè)置環(huán)境信息,當(dāng)用戶(hù)第一次登錄時(shí),該文件被執(zhí)行.2、/etc/environment:在登錄時(shí)操作系統(tǒng)使用的第二個(gè)...
正安縣氣動(dòng): ______ 您可以在終端命令行模式下輸入ksh以切入k-shell, 輸入exit則退出到上一個(gè)運(yùn)行的shell 如果您要定制啟動(dòng)后默認(rèn)的shell,可以用管理員權(quán)限編輯/etc/passwd文件,找到您的用戶(hù)名,編輯默認(rèn)的shell即可 當(dāng)然,您可以隨時(shí)輸入bash/ksh來(lái)進(jìn)行切換
正安縣氣動(dòng): ______ 打開(kāi)設(shè)置應(yīng)用程序和頭部更新和安全>對(duì)于開(kāi)發(fā). 在這里啟動(dòng)“開(kāi)發(fā)者模式”開(kāi)關(guān),使開(kāi)發(fā)者模式.接下來(lái),打開(kāi)控制面板,單擊“程序”,然后單擊“打開(kāi)Windows功能打開(kāi)或關(guān)閉”在程序和功能.在這里啟用“Windows子系統(tǒng)為L(zhǎng)inux(測(cè)...
正安縣氣動(dòng): ______ bash 的安裝和使用1 在 windows 10 內(nèi)部預(yù)覽版 build 14316 中,點(diǎn)擊“開(kāi)始”——“設(shè)置”,在打開(kāi)的設(shè)置窗口搜索框中輸入“特性”兩個(gè)字,將會(huì)出現(xiàn)“啟用或關(guān)閉 windows 功能”條目,點(diǎn)擊啟動(dòng)它.2 將彈出“windows 功能”對(duì)話(huà)框,在...
正安縣氣動(dòng): ______ sh或是執(zhí)行腳本,或是切換到sh這個(gè)bash里,默認(rèn)的shell是bash,你可以試試tcsh啊,csh啊,ksh,zsh什么的,看看別的shell是什么樣子的.當(dāng)然,linux中sh是鏈接到bash上的,所以sh與bash在功能上是沒(méi)有區(qū)別的.還有就是在執(zhí)行腳本的時(shí)候是用sh + 腳本名的方式來(lái)執(zhí)行,其實(shí),大部分的時(shí)候,簡(jiǎn)單腳本只要權(quán)限設(shè)置正確,可以直接執(zhí)行,不需要sh命令的
正安縣氣動(dòng): ______ 誒!你還要去好好去玩一下Linux(不要用圖形系統(tǒng)),你問(wèn)的這些問(wèn)題,真不好解釋1,chmod +x test.sh:將test.sh變成可執(zhí)行權(quán)限.2,test.sh 第一行有"#!/bin/sh” 告訴解釋器在什么位置.3,第一步test.sh變成可執(zhí)行了,./test.sh(運(yùn)行當(dāng)前...
正安縣氣動(dòng): ______ 首先打開(kāi)你的Windows 10的設(shè)置,在"更新和安全"選項(xiàng)中(我的機(jī)器是英文操作系統(tǒng),但中文操作系統(tǒng)類(lèi)似),選擇"開(kāi)發(fā)者",然后選擇"開(kāi)發(fā)者模式"; 在Windows 更新和安全選項(xiàng)中,選擇"Windows 更新",在"更新設(shè)置"中選擇...