Linux 中 source 命令的使用方式
source 命令是一個內置的 shell 命令,用於從當前 shell 會話中的文件讀取和執行命令。source 命令通常用於保留、更改當前 shell 中的環境變量。簡而言之,source 一個腳本,將會在當前 shell 中運行 execute 命令。
source
命令可用於:
-
刷新當前的 shell 環境
-
在當前環境使用 source 執行 Shell 腳本
-
從腳本中導入環境中一個 Shell 函數
-
從另一個 Shell 腳本中讀取變量
source 命令的語法
source
命令它需要一個文件,如果提供了參數,那麼將用作傳遞腳本的位置參數。
source FILENAME [ARGUMENTS]
也可以使用.
替代source
命令:
. FILENAME [ARGUMENTS]
如何使用 source 命令
一. 刷新當前的 shell 環境
可以在當前的 shell 環境中定義一個別名。爲ls -al
定義一個別名爲ll
:
[root@localhost ~]# echo "alias ll='ls -al'" >> ~/.bashrc
在~/.bashrc 文件中定義完別名,可以使用 source 命令刷新當前 shell 環境:
[root@localhost ~]# source ~/.bashrc
現在可以使用ll
別名列出當前目錄裏所有文件了,包括隱藏文件。
二. 在當前環境使用 source 執行 Shell 腳本
Shell 腳本不知道你在當前 Shell 環境中定義的變量。source 命令可用於在當前會話中執行你的 Shell 腳本。
下面在定義一個變量:
[root@localhost ~]# website=https://www.linuxprobe.com
創建一個腳本:
[root@localhost ~]# vim web.sh
#!/bin/bash
echo $website
使用source
在當前 shell 會話中執行它:
[root@localhost ~]# source web.sh
https://www.linuxprobe.com
當使用 sh 運行腳本時,找不到環境中定義的變量:
三. 從腳本中導入環境中一個 Shell 函數
首先創建一個腳本,定義一個函數:
[root@localhost ~]# vim func.sh
#!/bin/bash
foo(){
echo "test function!"
}
要在當前的 shell 會話中導入上述腳本的功能,使用下面命令:
[root@localhost ~]# source func.sh
下面在終端中執行以下 func.sh 腳本中的foo
函數試試:
[root@localhost ~]# foo
test function!
source 完腳本之後,可以看到在當前回話的終端中可以執行腳本里面的函數。
四. 從另一個 Shell 腳本中讀取變量
首先創建帶有一些變量的 shell 腳本,請輸入:
[root@localhost ~]# vim var.sh
#!/bin/bash
a=1
b=2
c=3
再創建一個腳本,該腳本讀取上一個腳本var.sh
中的變量:
[root@localhost ~]# vim read.sh
#!/bin/bash
source ~/var.sh
echo $a
echo $b
echo $c
在腳本中首先使用 source 將var.sh
中的變量到處到當前回話,然後 echo 顯示變量值。下面執行read.sh
看一下:
五. 讀取並執行命令
source
命令可以從文件讀取和執行命令。下面的一個文本文件中帶有兩個命令,使用 source 命令運行該文件,看看是否會執行裏面的命令。
下面創建一個文件 cmd.txt,保存兩個命令:
[root@localhost ~]# cat cmd.txt
ip ad
date
下面使用source
執行這個文件:
[root@localhost ~]# source cmd.txt
總 結
source
命令在當前 shell 中執行腳本,而exec
命令在新的 shell 中運行。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/wcQ9rHS28gvfquRQDw4QUA