0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Linux使用source命令加載變量與函數(shù)

CHANBAEK ? 來(lái)源:myfreax ? 作者:myfreax ? 2022-12-05 16:19 ? 次閱讀

source命令用于在當(dāng)前Shell運(yùn)行文件中的命令,source命令可用于將函數(shù),變量和配置文件加載當(dāng)前Shell。

source是Bash內(nèi)置的命令,Bash是Linux和UNIX操作系統(tǒng)最流行Shell之一。source命令之間的行為可能略有不同。

在本教程中,我們將會(huì)說(shuō)明如何在Linux使用source命令運(yùn)行文件的命令,加載變量與函數(shù)等。

source命令

source命令的語(yǔ)法有兩種,第一種是source FILENAME [ARGUMENTS]。第二種是.FILENAME [ARGUMENTS]

.source命令的別名。如果FILENAME不是文件的絕對(duì)路徑,source命令將在PATH環(huán)境變量指定的目錄搜索文件FILENAME。

如果在$PATH中找不到文件FILENAME,source命令將在當(dāng)前目錄中搜索文件FILENAME。

如果FILENAME文件存在,source命令退出代碼為0。如果找不到文件FILENAMEsource命令退出代碼為1。

如果ARGUMENTS有給出,ARGUMENTS將成為FILENAME文件的位置參數(shù)ARGUMENTS可以是一個(gè)或者多個(gè)。

source 命令加載函數(shù)

如果您的多個(gè)Shell腳本有著相同的函數(shù),則可以將函數(shù)提取到一個(gè)單獨(dú)的文件中,然后在腳本中加載這些函數(shù)。

假設(shè)當(dāng)前目錄存在文件functions.sh。文件包含bash函數(shù)check_root,用于檢查運(yùn)行腳本的用戶是否是root用戶,如果不是root用戶,它將顯示一條消息并退出腳本。

現(xiàn)在你想在另一個(gè)腳本文件使用functions.sh文件包含的check_root函數(shù)檢查運(yùn)行腳本的用戶是否是root用戶。

此時(shí),你只需在腳本簡(jiǎn)單的運(yùn)行命令source functions.sh即可將check_root函數(shù)加載當(dāng)前Shell會(huì)話。

#!/usr/bin/env bash

source functions.sh
check_root

echo "I am root"
check_root () {
  if [[ $EUID -ne 0 ]]; then
    echo "This script must be run as root" 
    exit 1
  fi
}

functions.sh

source 命令加載變量

假設(shè)你當(dāng)前目錄存在文件config.sh。文件包含兩行Shell代碼,行name="myfreax"設(shè)置變量name。echo "Hello ${name}!"運(yùn)行echo命令打印變量name的值。

現(xiàn)在如果你想使用config.shname變量,可以運(yùn)行命令source config.shname變量加載到當(dāng)前Shell會(huì)話。

你也可以使用source命令的別名.。運(yùn)行命令. config.shname變量加載到當(dāng)前Shell會(huì)話。

source config.sh
#eq
. config.sh
name="myfreax"
echo "Hello ${name}!"

config.sh

結(jié)論

在本教程中,你了解如何在Linux使用source命令加載變量與函數(shù),運(yùn)行文件的命令。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207888
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4234

    瀏覽量

    61961
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    658

    瀏覽量

    21927
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    607

    瀏覽量

    28257
  • Source
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    9749
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)核模塊加載過(guò)程解析(1)

    `insmod_main()`函數(shù)是 insmod 命令的入口函數(shù),該函數(shù)首先通過(guò)函數(shù)參數(shù)獲取被加載
    發(fā)表于 06-27 15:42 ?534次閱讀

    何在Linux中使用htop命令

    本文介紹如何在 Linux 中使用 htop 命令。
    的頭像 發(fā)表于 12-04 14:45 ?1375次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>中使用htop<b class='flag-5'>命令</b>

    linuxsource命令用法

    source filename . filename(中間有空格)source命令(從 C Shell 而來(lái))是bash shell的內(nèi)置命令。點(diǎn)
    發(fā)表于 07-17 06:07

    linux驅(qū)動(dòng)的入口函數(shù)module_init的加載和釋放

    幾乎每個(gè)linux驅(qū)動(dòng)都有個(gè)module_init(與module_exit的定義在Init.h (/include/linux) 中)。沒(méi)錯(cuò),驅(qū)動(dòng)的加載就靠它。為什么需要這樣一個(gè)宏?原因是按照一般的編程想法,各部分的初始化
    發(fā)表于 05-05 14:43 ?5631次閱讀
    <b class='flag-5'>linux</b>驅(qū)動(dòng)的入口<b class='flag-5'>函數(shù)</b>module_init的<b class='flag-5'>加載</b>和釋放

    Linux時(shí)間子系統(tǒng)之一:clock source(時(shí)鐘源)

    clock source用于為linux內(nèi)核提供一個(gè)時(shí)間基線,如果你用linux的date命令獲取當(dāng)前時(shí)間,內(nèi)核會(huì)讀取當(dāng)前的clock source
    發(fā)表于 05-10 14:36 ?1811次閱讀

    何在Linux使用pidof命令

    `pidof`是一個(gè)命令行程序,可讓您找到正在運(yùn)行程序的進(jìn)程ID。在教程中,我們將說(shuō)明如何在Linux 使用pidof命令。
    的頭像 發(fā)表于 12-05 17:01 ?2131次閱讀

    何在Linux使用touch命令

    Linux touch命令用于更改文件時(shí)間戳。但touch命令的最常見(jiàn)用法是創(chuàng)建文件。
    的頭像 發(fā)表于 12-05 17:21 ?1896次閱讀

    如何使用Linux lsmod命令

    lsmod是一個(gè)命令行程序,用于顯示已加載Linux內(nèi)核模塊的信息。
    的頭像 發(fā)表于 01-17 17:51 ?3786次閱讀

    何在Linux上使用粘貼命令?

    Linux中的粘貼命令是一個(gè)有用的工具,用于將多個(gè)文件或文本行合并到單個(gè)文件或輸出中。它通常與剪切命令結(jié)合使用,允許用戶剪切特定行或文本部分并將其粘貼到其他地方。在本文中,小編將探討 Linu
    的頭像 發(fā)表于 02-08 16:58 ?1681次閱讀

    何在Linux中使用progress命令

    progress 命令是一個(gè)簡(jiǎn)單但功能強(qiáng)大的 Linux/Unix 命令行工具,可讓用戶查看文件操作的進(jìn)度。
    的頭像 發(fā)表于 04-08 15:51 ?2039次閱讀

    source命令是如何工作的

    source 命令可以在當(dāng)前 shell 中執(zhí)行文件中的命令,也可以用于刷新環(huán)境變量。不過(guò)老實(shí)說(shuō),它的主要用途就是用于刷新環(huán)境變量。其語(yǔ)法格
    的頭像 發(fā)表于 05-14 15:57 ?1133次閱讀

    恒訊科技分析:如何在Linux上使用rm命令刪除文件和目錄?

    本指南展示了如何在Linux中使用rm命令行刪除文件、目錄和其他內(nèi)容?
    的頭像 發(fā)表于 06-09 17:02 ?1054次閱讀

    Linux驅(qū)動(dòng)加載卸載模塊命令

    ); module_exit (my_exit); 加載卸載模塊命令 模塊加載 insmod :加載指定目錄下的一個(gè).ko文件到內(nèi)核。例如: # insmod drv.ko modpr
    的頭像 發(fā)表于 09-26 16:54 ?795次閱讀

    linux命令和shell編程有什么聯(lián)系

    命令,并提供了許多功能和特性,如變量、控制結(jié)構(gòu)、函數(shù)等,這些功能和特性使得Shell編程成為可能。 其次,Linux命令是Shell編程的
    的頭像 發(fā)表于 11-08 10:53 ?768次閱讀

    linuxsource命令的用法

    Linux中,source命令通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷(xiāo)并重新登錄。source命令可以用于讀取并執(zhí)行腳
    的頭像 發(fā)表于 11-08 14:35 ?1722次閱讀