欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux下執(zhí)行shell命令方法簡介

 更新時間:2016年12月17日 09:22:36   作者:warjiang  
本文給大家分享的是linux系統(tǒng)下執(zhí)行shell命令的常用的2種方法,希望對初學shell命令的小伙伴能夠有所幫助

linux下執(zhí)行shell命令有兩種方法

  1.  在當前shell中執(zhí)行shell命令
  2. 在當前shell中產(chǎn)生一個subshell,在subshell中執(zhí)行shell命令

 1.在當前shell中執(zhí)行shell命令

主要就是在命令行中通過交互方式方式直接輸入shell命令,命令行直接執(zhí)行給出結果.比如這樣:

2.在當前shell中產(chǎn)生一個subshell,在subshell中執(zhí)行shell命令

比如我們把shell寫成shell腳本的方式來運行,這個時候會先啟動一個subshell來代替當前的shell,然后執(zhí)行shell腳本比如

#demo.sh

#!/bin/bash
read -p "please input your name:" name
echo "hello $name"
添加執(zhí)行權限 chmod +x demo.sh 執(zhí)行如下 

這個腳本功能很簡單,就是輸出一行話,提示用戶輸入自己的名字,然后腳本輸出hello xxx。我主要想說下執(zhí)行結果及其分析。先來一張圖:

首先我這邊是啟動了兩個shell,這個時候左右兩個shell的pid號分別是2473和2505,并且這兩個進程都是從一個叫做進程ID號為2465的進程中fork出來的子進程。

當執(zhí)行了 ./demo.sh 之后,會看到有三個bash的進程,進程ID分別是2473、2505、2633.其中2473和2505的分別對應之前的兩個shell的進程ID。多出了一個pid為2633的進程。這個進程其實就是我們說的subshell??聪逻@個pid為2633的進程的父進程的進程號是2473,就是說是從pid為2473的shell進程中啟動一個subshell,subshell的進程ID號為2633。當我們輸入完warjiang,之后,腳本繼續(xù)執(zhí)行,執(zhí)行完畢之后,subshell進程退出。

這個時候我們再去查看進程的時候,就會發(fā)現(xiàn)少了pid為2633的進程,也就是少了前面那個subshell。

講到這里,對于在當前終端中執(zhí)行shell與在當前終端中啟動subshell執(zhí)行shell兩種方式執(zhí)行shell也是有了一定程度的了解。下面將引出source命令與在終端中執(zhí)行shell腳本的區(qū)別。

source與bash的區(qū)別

嚴格的來說,我這個標題有毒,因為source命令本來就是屬于bash中的一部分。我這里其實想說的是 source demo.shbash demo.sh 的區(qū)別。

相信大家但凡有l(wèi)inux下的開發(fā)、運維經(jīng)驗的codeframer都會配置過什么jdk等等之類的環(huán)境變量,大家一定都會記得自己都執(zhí)行過 source ~/.bash.rc ,那么這個source到底是什么.先把這個問題放一放,我們先往下看.還是上面的那個demo.sh的腳本.下面我們來比較一下 bash demo.sh(或者先執(zhí)行chmod +x demo.sh 再執(zhí)行./demo.sh)source demo.sh 的區(qū)別。

其中靠上面的一張圖片是執(zhí)行 ./demo.sh 的截圖,靠下面的一張是 source demo.sh 。比較兩張圖片,顯然,兩張圖片最大的區(qū)別在于,上面一張圖片多了一個subshell也就是pid為2633進程的出現(xiàn)再消失的過程。所以如果執(zhí)行執(zhí)行shell腳本,當前命令行會自動產(chǎn)生一個子進程,當執(zhí)行完腳本之后,會自動把這個子進程關閉。但是souce命令不會產(chǎn)生新的子進程,而是在當前終端進程中讀取并執(zhí)行shell腳本。

所以 source與bash的最大區(qū)別在于source不用啟動新的shell,而bash需要啟動新的shell

再回到上面那個 source ~/.bashrc ,其實相當于在當前的終端中執(zhí)行 ~/.bashrc ,而.bashrc文件中的內容就是中關于export PATH部分的語句,也就是設置PATH變量,執(zhí)行 source ~/.bashrc 讓配置的新的環(huán)境變量PATH在當前終端中生效.

source與(.)

 

這邊的話,~/.bash_aliases一般用過alias的持久化,記錄用戶的alias記錄。直觀上來看,執(zhí)行 . ~/.bash_aliases 應該是設置一些aliases中的變量別名。那么這個 . 是什么.其實這里的 .source 的作用是一樣,表示在當前的終端中執(zhí)行腳本,這樣就可以讓當前的終端共享aliases中的alias配置信息

相關文章

  • 如何編寫健壯的Bash腳本(經(jīng)驗分享)

    如何編寫健壯的Bash腳本(經(jīng)驗分享)

    本文介紹下,編寫出健壯的bash shell腳本的方法,感興趣的朋友參考學習下
    2013-11-11
  • linux啟動dhcp服務器步驟

    linux啟動dhcp服務器步驟

    在本篇文章里小編給大家整理了關于linux怎么啟動dhcp服務器的相關知識點內容,需要的朋友們跟著學習下。
    2019-05-05
  • 查看Linux系統(tǒng)重啟的四種基本命令詳解

    查看Linux系統(tǒng)重啟的四種基本命令詳解

    Linux 重啟命令是指在Linux系統(tǒng)中,通過指定命令來啟動或重啟系統(tǒng),在日常使用中,我們經(jīng)常需要對系統(tǒng)進行重啟操作,如更新軟件、修改系統(tǒng)配置等,因此,熟練掌握Linux重啟命令是非常必要的,所以本文給大家介紹了查看Linux系統(tǒng)重啟的四種基本命令,需要的朋友可以參考下
    2024-04-04
  • Linux?Shell腳本多命令執(zhí)行邏輯的示例詳解

    Linux?Shell腳本多命令執(zhí)行邏輯的示例詳解

    Linux?中可以使用分號";“、雙and號”&&“和雙豎線”||"來連接多個命令。根據(jù)場景的不同適當?shù)氖褂煤线m的符號,感興趣的小伙伴可以了解一下
    2022-10-10
  • shell在指定目錄下批量執(zhí)行sql腳本的實例

    shell在指定目錄下批量執(zhí)行sql腳本的實例

    今天小編就為大家分享一篇shell在指定目錄下批量執(zhí)行sql腳本的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • linux sed命令詳解(推薦)

    linux sed命令詳解(推薦)

    sed命令是一個面向字符流的非交互式編輯器,也就是說sed不允許用戶與它進行交互操作。接下來通過本文給大家詳細介紹linux sed命令相關知識,感興趣的朋友一起學習吧
    2017-04-04
  • linux命令詳解之掛載光驅的方法

    linux命令詳解之掛載光驅的方法

    linux的硬件設備在/dev目錄下,光驅也是其中,掛載光驅的方法如下,大家參考使用吧
    2014-01-01
  • Shell腳本判斷Apache進程是否存在

    Shell腳本判斷Apache進程是否存在

    這篇文章主要介紹了Shell腳本判斷Apache進程是否存在,若不存在則顯示不存在,若存在則顯示進程個數(shù),當不等于10個時用紅色字體通知管理員,需要的朋友可以參考下
    2014-12-12
  • shell 提取文件名和目錄名的方法實現(xiàn)

    shell 提取文件名和目錄名的方法實現(xiàn)

    本文主要介紹了shell 提取文件名和目錄名的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • shell腳本中一鍵部署zookeeper集群服務的方法

    shell腳本中一鍵部署zookeeper集群服務的方法

    Zookeeper是一個開源的分布式的,為分布式框架提供協(xié)調服務的Apache項目,這篇文章主要介紹了shell腳本一鍵部署zookeeper集群服務的方法,需要的朋友可以參考下
    2022-05-05

最新評論