bash編譯
1. bash是什麼編程語言呀
什麼是shell
shell是用戶和linux操作系統之間的介面。Linux中有多種shell,其中預設使用的是Bash。本章講述了shell的工作原理,shell的種類,shell的一般操作及Bash的特性。
什麼是shell
Linux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的介面。它是命令語言、命令解釋程序及程序設計語言的統稱。
shell是用戶和Linux內核之間的介面程序,如果把Linux內核想像成一個球體的中心,shell就是圍繞內核的外層。當從shell或其他程序向Linux傳遞命令時,內核會做出相應的反應。
shell是一個命令語言解釋器,它擁有自己內建的shell命令集,shell也能被系統中其他應用程序所調用。用戶在提示符下輸入的命令都由shell先解釋然後傳給Linux核心。
Shell是一種具備特殊功能的程序, 它是介於使用者和 UNIX/linux 操作系統之核心
程序(kernel)間的一個介面。為什麼我們說 shell 是一種介於系統核心程序與使用者
間的中介者呢?讀過操作系統概論的讀者們都知道操作系統是一個系統資源的管理者與分
配者,當您有需求時,您得向系統提出;從操作系統的角度來看,它也必須防止使用者因
為錯誤的操作而造成系統的傷害?眾所周知,對計算機下命令得透過命令(command) 或
是程序(program);程序有編譯器(compiler)將程序轉為二進制代碼,可是命令呢?
其實shell 也是一支程序,它由輸入設備讀取命令,再將其轉為計算機可以了解的機械碼,
然後執行它。
各種操作系統都有它自己的 shell,以 DOS 為例,它的 shell 就是 command.com文
件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解譯程序可以取代標準的
command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外還有 C shell(/bin/csh)、
Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh)
等其它的 shell。UNIX/linux將 shell 獨立於核心程序之外, 使得它就如同一般的應用
程序, 可以在不影響操作系統本身的情況下進行修改、更新版本或是添加新的功能。
有一些命令,比如改變工作目錄命令cd,是包含在shell內部的。還有一些命令,例如拷貝命令cp和移動命令rm,是存在於文件系統中某個目錄下的單獨的程序。對用戶而言,不必關心一個命令是建立在shell內部還是一個單獨的程序。
shell首先檢查命令是否是內部命令,若不是再檢查是否是一個應用程序(這里的應用程序可以是Linux本身的實用程序,如ls和rm,也可以是購買的商業程序,如xv,或者是自由軟體,如emacs)。然後shell在搜索路徑里尋找這些應用程序(搜索路徑就是一個能找到可執行程序的目錄列表)。如果鍵入的命令不是一個內部命令並且在路徑里沒有找到這個可執行文件,將會顯示一條錯誤信息。如果能夠成功找到命令,該內部命令或應用程序將被分解為系統調用並傳給Linux內核。
shell的另一個重要特性是它自身就是一個解釋型的程序設計語言,shell程序設計語言支持絕大多數在高級語言中能見到的程序元素,如函數、變數、數組和程序控制結構。shell編程語言簡單易學,任何在提示符中能鍵入的命令都能放到一個可執行的shell程序中。
當普通用戶成功登錄,系統將執行一個稱為shell的程序。正是shell進程提供了命令行提示符。作為默認值(TurboLinux系統默認的shell是BASH),對普通用戶用「$」作提示符,對超級用戶(root)用「#」作提示符。
一旦出現了shell提示符,就可以鍵入命令名稱及命令所需要的參數。shell將執行這些命令。如果一條命令花費了很長的時間來運行,或者在屏幕上產生了大量的輸出,可以從鍵盤上按ctrl+c發出中斷信號來中斷它(在正常結束之前,中止它的執行)。
當用戶准備結束登錄對話進程時,可以鍵入logout命令、exit命令或文件結束符(EOF)(按ctrl+d實現),結束登錄。
2. 如何在ubuntu里編寫自己的bash
升級到Win10,可以「優雅地」使用Ubuntu的bash。其他方式實現的bash(比如Cygwin)只是模擬了bash的部分功能,有一些如git bash只附帶了少量的bash工具,不能進行編譯。
而Win10中嵌入的bash是原生態的Ubuntu的bash,可以進行編譯,安裝其他需要的工具。安裝方法都和Ubuntu一樣。
3. 在bash中,以下哪些說法是正確的
以下哪些說法是正確的呢
如果一個程序中包含了一個庫函數的頭文件例如 <string.h>,但程序代碼中並沒有用到裡面的庫函數,則該程序如果包含這個多餘的頭文件
A. 會導致編譯該程序的時間更長
B. 會導致編譯生成的可執行文件更大
C. 會導致編譯生成的程序在載入時佔用更多內存
D. 會導致編譯生成的程序在運行時的執行時間更長收起
A,B,C是正確的。
4. 我用linux操作系統,只會寫bash程序,不會寫c,怎樣用gcc編譯bash
你在說什麼啊,gcc是編譯C語言的,編譯bash干什麼
你寫一個C文件取名叫XXX.C,裡面寫C語言代碼,然後再終端輸入命令
gcc xxx.c 就會出現一個a 或 a.out的文件,那就是編譯後的可執行文件了
前提是你寫的是對的
5. 怎麼在bash腳本中運行一個已經編譯好的可執行程序
有2種辦法:
1、直接執行絕對路徑:
/usr/local/apache2/bin/apachetcl
2、建立軟鏈接到系統PATH中:
ln -s /usr/local/apache2/bin/* /usr/local/bin/
然後,你就可以直接敲命令apachectl了。。。
6. bash如何進行二次編譯
自動下載代碼,為代碼生成 makefile, 檢測 opencv 是否安裝和版本,如果版本過低則通過腳本自動安裝比較的方法。 編譯生成可執行文件並執行 。
選項 --enable-static-link ,指定bash為靜態編譯選項 --without-bash-malloc ,指定bash不使用自帶的malloc,而是使用glibc的malloc,如果不開啟此項。靜態編譯時將報錯。在IOS上需要去掉 --enable-static-link,否則靜態編譯時將報錯。在Ubuntu上直接./configure 也可以。
7. linux裡面bash是什麼
bash是一種命令處理器可以寫腳本語言 《linux就該這么學》不錯的linux自學書籍
8. Linux下編譯出現這個bash:./configure:No such file or directory 怎麼解決
1、開始以為是sh路徑問題,用which查看是正確的。
9. ubuntu bash.bashrc為什麼編譯不了
樓主是想說為什麼編輯不了嗎...
如果是的話,bash.bashrc是需要root許可權才能編輯的,在你用的編輯命令前加sudo即可.
比如你要用gedit就用
sudo gedit bash.bashrc
10. 編譯的程序中能否調用 bash 腳本或者 perl 腳本
應該是可以的,思路換一換,腳本也需要解釋器運行之,你調用相應的解釋器就是了,解釋器總是二進制的吧?然後腳本的名字當參數傳遞給解釋器即可.