成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊一聊腳本執行方式,你學會了嗎?

系統 Linux
Shell腳本的后綴一般為“.sh”,腳本第一行一般都是指向執行Shell,例如“#!/bin/bash”。【#!】指定解釋腳本執行的Shell。

[[408733]]

本文轉載自微信公眾號「Linux常用命令」,作者妖生。轉載本文請聯系Linux常用命令公眾號。

Shell腳本的后綴一般為“.sh”,腳本第一行一般都是指向執行Shell,例如“#!/bin/bash”。【#!】指定解釋腳本執行的Shell。

執行Shell腳本有多種方式,我們可以直接使用【sh xx.sh】或者【bash xx.sh】來執行Shell,也可以使用【./xx.sh】、【/shell/xx.sh】,或者【source .sh】、【. xx.sh】。

它們有什么區別呢?測試腳本如下:

  1. [root@yaomm shell]# cat testShell.sh    ##  查看演示Shell腳本 
  2. #!/bin/bash 
  3. cd /opt  ;          # 切換到/opt目錄去 
  4. pwds=`pwd`;         # 查看當前路徑 
  5. pids=$$;        # 查看當前進程 
  6. users=`whoami`; # 查看當前用戶 
  7. echo "當前路徑: ${pwds},當前進程PID:${pids},當前用戶: ${users}" 

sh方式執行(也可以使用bash):

  1. [root@yaomm shell]# echo $$     ##  查看當前cli(命令行)界面的進程號 
  2. 22524                       ##  每次登錄Shell時打開的Shell界面進程號 
  3.  
  4. [root@yaomm shell]# sh testShell.sh             ##  使用bash執行 
  5. 當前路徑: /opt,當前進程PID:10836,當前用戶: root ##  輸出當前切換路徑、進程號、用戶名 
  6. [root@yaomm shell]# echo $users             ##  子Shell中變量打印為空 

相對路徑方式執行(也可以使用絕對路徑):

  1. [root@yaomm shell]# ./testShell.sh              ##  使用路徑執行,沒有權限 
  2. -bash: ./testShell.sh: Permission denied            ##  沒有執行權限 
  3. [root@yaomm shell]# chmod +x testShell.sh       ##  賦予執行權限 
  4. [root@yaomm shell]# ./testShell.sh              ##  使用路徑執行 
  5. 當前路徑: /opt,當前進程PID:10873,當前用戶: root ##  與bash執行的結果類似 
  6. [root@yaomm shell]# echo $users             ##  子Shell中變量打印為空 

source方式執行(也可以使用點.):

  1. [root@yaomm shell]# source testShell.sh         ##  使用source執行 
  2. 當前路徑: /opt,當前進程PID:22524,當前用戶: root ##  進程號 
  3. [root@yaomm opt]#                           ##  看到當前目錄已經被切換到/opt下了 
  4. [root@yaomm opt]# echo $users               ##  source執行,子Shell中變量被賦值 
  5. root            ##  $users成為全局環境變量,不過重新登陸Shell后還是會消失 

sh、source不需要執行權限就可以運行Shell腳本,為什么?因為Shell腳本只是作為一個參數傳遞到sh、bash、source命令中,使用的是bash這些腳本的權限。而路徑執行,則使用的是被執行腳本文件本身的權限,所以需要賦權x。

sh與source執行也是有區別的,sh執行腳本會打開(fork)一個子進程(也叫子Shell、Sub Shell),Shell腳本內的環境變化不會影響到當前Shell進程(父進程、父Shell)。

source不創建Sub Shell,在當前Shell環境下讀取并執行腳本文件中的命令,相當于順序讀取并執行“.sh”文件里面的命令。

還有其他執行腳本的方式,不常用,不再贅述。

最后,用一張表來總結下,Shell執行的幾種方式和區別。

執行命令 示例 權限 打開子進程 說明
sh、bash bash test.sh、h test.sh 不需要 sh、bash都是使用/usr/bin/bash
./、/ ./test.sh、/shell/test.sh 需要 相對路徑、絕對路徑執行,需要有腳本文件的執行權限
.、source . test.sh 、source test.sh 不需要 點+空格等同source,source執行腳本相當于把腳本中語句逐行讀取并在命令行界面執行
<、| sh>test.sh、cat tst.sh | bash 不需要 對有參數的腳本不支持
exec exec ./test.sh 需要 替換當前進程資源,不要在命令行界面執行,否則登錄Shell界面會被直接關閉

 

責任編輯:武曉燕 來源: Linux常用命令
相關推薦

2024-05-06 00:00:00

InnoDBView隔離

2023-07-26 07:24:07

2021-07-16 11:48:26

模型 .NET微軟

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構

2024-09-26 09:10:08

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發編程

2023-10-10 11:04:11

Rust難點內存

2023-01-30 09:01:54

圖表指南圖形化

2024-07-31 08:39:45

Git命令暫存區

2023-12-12 08:02:10

2022-07-08 09:27:48

CSSIFC模型

2024-08-06 09:47:57

2023-12-27 09:32:47

SQL語句數據

2023-03-10 22:08:20

2021-01-28 22:31:33

分組密碼算法

2023-09-22 17:36:37

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线视频免费观看 | 亚洲精品美女在线观看 | 久久com| 成人免费视频网站在线看 | 国产精品精品视频一区二区三区 | 雨宫琴音一区二区在线 | 久久婷婷麻豆国产91天堂 | 7777精品伊人久久精品影视 | 久久一区二区三区四区五区 | 黄色毛片大全 | 一区二区三区国产视频 | 91精品久久久久 | 午夜精品网站 | 成人三级视频 | 99草免费视频 | 欧美三级免费观看 | 九九一级片| 欧美成人aaa级毛片在线视频 | 亚洲精品一区二区三区 | 久久一 | 色天堂影院 | 国产精品毛片一区二区在线看 | 黄色在线免费观看视频网站 | 日韩免费看视频 | 夜夜骑综合 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 国产一区二区精品在线观看 | 精产国产伦理一二三区 | 欧美黄色网 | 97久久精品午夜一区二区 | 国产日韩精品久久 | 亚洲一区二区视频 | 国产视频精品区 | 亚洲在线中文字幕 | 日本涩涩视频 | 国产一级黄色网 | 亚洲色图综合网 | 男人天堂手机在线视频 | 一级做a爰片性色毛片16美国 | 91视频在线观看 | 蜜桃一区二区三区 |