0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Linux使用source命令加载变量与函数

CHANBAEK 来源:myfreax 作者:myfreax 2022-12-05 16:19 次阅读

source命令用于在当前Shell运行文件中的命令,source命令可用于将函数,变量和配置文件加载当前Shell。

source是Bash内置的命令,Bash是Linux和UNIX操作系统最流行Shell之一。source命令之间的行为可能略有不同。

在本教程中,我们将会说明如何在Linux使用source命令运行文件的命令,加载变量与函数等。

source命令

source命令的语法有两种,第一种是source FILENAME [ARGUMENTS]。第二种是.FILENAME [ARGUMENTS]

.source命令的别名。如果FILENAME不是文件的绝对路径,source命令将在PATH环境变量指定的目录搜索文件FILENAME

如果在$PATH中找不到文件FILENAMEsource命令将在当前目录中搜索文件FILENAME

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

如果ARGUMENTS有给出,ARGUMENTS将成为FILENAME文件的位置参数ARGUMENTS可以是一个或者多个。

source 命令加载函数

如果您的多个Shell脚本有着相同的函数,则可以将函数提取到一个单独的文件中,然后在脚本中加载这些函数。

假设当前目录存在文件functions.sh。文件包含bash函数check_root,用于检查运行脚本的用户是否是root用户,如果不是root用户,它将显示一条消息并退出脚本。

现在你想在另一个脚本文件使用functions.sh文件包含的check_root函数检查运行脚本的用户是否是root用户。

此时,你只需在脚本简单的运行命令source functions.sh即可将check_root函数加载当前Shell会话。

#!/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 命令加载变量

假设你当前目录存在文件config.sh。文件包含两行Shell代码,行name="myfreax"设置变量nameecho "Hello ${name}!"运行echo命令打印变量name的值。

现在如果你想使用config.shname变量,可以运行命令source config.shname变量加载到当前Shell会话。

你也可以使用source命令的别名.。运行命令. config.shname变量加载到当前Shell会话。

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

config.sh

结论

在本教程中,你了解如何在Linux使用source命令加载变量与函数,运行文件的命令。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11304

    浏览量

    209532
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62625
  • 命令
    +关注

    关注

    5

    文章

    684

    浏览量

    22027
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28373
  • Source
    +关注

    关注

    0

    文章

    17

    浏览量

    9824
收藏 人收藏

    评论

    相关推荐

    Linux内核模块加载过程解析(1)

    `insmod_main()`函数是 insmod 命令的入口函数,该函数首先通过函数参数获取被加载
    发表于 06-27 15:42 653次阅读

    何在Linux中使用htop命令

    本文介绍如何在 Linux 中使用 htop 命令
    的头像 发表于 12-04 14:45 2022次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>中使用htop<b class='flag-5'>命令</b>

    linuxsource命令用法

    source filename . filename(中间有空格)source命令(从 C Shell 而来)是bash shell的内置命令。点
    发表于 07-17 06:07

    linux驱动的入口函数module_init的加载和释放

    几乎每个linux驱动都有个module_init(与module_exit的定义在Init.h (/include/linux) 中)。没错,驱动的加载就靠它。为什么需要这样一个宏?原因是按照一般的编程想法,各部分的初始化
    发表于 05-05 14:43 5700次阅读
    <b class='flag-5'>linux</b>驱动的入口<b class='flag-5'>函数</b>module_init的<b class='flag-5'>加载</b>和释放

    Linux时间子系统之一:clock source(时钟源)

    clock source用于为linux内核提供一个时间基线,如果你用linux的date命令获取当前时间,内核会读取当前的clock source
    发表于 05-10 14:36 1967次阅读

    何在Linux使用pidof命令

    `pidof`是一个命令行程序,可让您找到正在运行程序的进程ID。在教程中,我们将说明如何在Linux 使用pidof命令
    的头像 发表于 12-05 17:01 2330次阅读

    何在Linux使用touch命令

    Linux touch命令用于更改文件时间戳。但touch命令的最常见用法是创建文件。
    的头像 发表于 12-05 17:21 2081次阅读

    如何使用Linux lsmod命令

    lsmod是一个命令行程序,用于显示已加载Linux内核模块的信息。
    的头像 发表于 01-17 17:51 3973次阅读

    何在Linux上使用粘贴命令

    Linux中的粘贴命令是一个有用的工具,用于将多个文件或文本行合并到单个文件或输出中。它通常与剪切命令结合使用,允许用户剪切特定行或文本部分并将其粘贴到其他地方。在本文中,小编将探讨 Linu
    的头像 发表于 02-08 16:58 1838次阅读

    何在Linux中使用progress命令

    progress 命令是一个简单但功能强大的 Linux/Unix 命令行工具,可让用户查看文件操作的进度。
    的头像 发表于 04-08 15:51 2475次阅读

    source命令是如何工作的

    source 命令可以在当前 shell 中执行文件中的命令,也可以用于刷新环境变量。不过老实说,它的主要用途就是用于刷新环境变量。其语法格
    的头像 发表于 05-14 15:57 1288次阅读

    恒讯科技分析:如何在Linux上使用rm命令删除文件和目录?

    本指南展示了如何在Linux中使用rm命令行删除文件、目录和其他内容?
    的头像 发表于 06-09 17:02 1184次阅读

    Linux驱动加载卸载模块命令

    ); module_exit (my_exit); 加载卸载模块命令 模块加载 insmod :加载指定目录下的一个.ko文件到内核。例如: # insmod drv.ko modpr
    的头像 发表于 09-26 16:54 925次阅读

    linux命令和shell编程有什么联系

    命令,并提供了许多功能和特性,如变量、控制结构、函数等,这些功能和特性使得Shell编程成为可能。 其次,Linux命令是Shell编程的
    的头像 发表于 11-08 10:53 930次阅读

    linuxsource命令的用法

    Linux中,source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。source命令可以用于读取并执行脚
    的头像 发表于 11-08 14:35 2343次阅读