首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用脚本中的功能

使用脚本中的功能
EN

Unix & Linux用户
提问于 2021-10-06 18:41:56
回答 1查看 41关注 0票数 -1

我有一个bash脚本linge.sh,我使用

source ${HOME}/Opstk/bin/linge/linge.sh

现在,我希望通过调用bash文件,在linge.sh中包含其他功能(可选地启用)

${HOME}/Opstk/bin/linge/edvart/edvart.sh

简单使用

source ${HOME}/Opstk/bin/linge/edvart/edvart.sh

在……里面

${HOME}/Opstk/bin/linge/linge.sh

我希望每当用户启动终端时函数调用都是可用的。

这些函数的定义如下

代码语言:javascript
复制
linge-environ-texinfo
{
 ...
}
export -f linge-environ-texinfo

当我在终点站时,我只想按我的意愿调用这个函数。

代码语言:javascript
复制
linge-environ-texinfo -opt1 --opt2=val param1 param2
EN

回答 1

Unix & Linux用户

发布于 2021-10-07 12:31:49

当您source一个文件时,您正在执行当前shell中该文件中的命令。这与您将文件内容直接输入终端,逐行输入文件的内容没有本质上的不同。对于您的.bashrc也是如此--当它被获取时,它只是在当前shell中运行所有这些命令,并且当它获取其他文件时,它们也会在当前shell中运行。文件的来源可以是一种将你的.bashrc分解成不同模块的好方法,所以你不会每次想要调整某个东西时都会看到一个巨大的文件。

另一方面,export为从其导出的shell执行的命令提供给定的名称/变量。例如,如果要在shell中定义变量FOO=bar而不导出变量,然后运行一个脚本,希望FOO在该脚本的上下文中仍然相等于"bar“,那么您就错了--没有向运行脚本的子shell提供额外的上下文,因此FOO将在那里取消设置。使用export会解决这个问题,因为它告诉shell提供该名称,并将其设置为一个给定的值(如果提供的话),以处理由此产生的任何进程,包括脚本。

因此,对于您最初的问题--如果您想在运行一个新的shell后立即定义您想要拥有的函数,那么在您的.bashrc中找到一个包含它们的文件就可以了。类似地,如果您试图将一些函数有效地导入到要使用这些函数的其他文件中,则只需将包含这些函数的文件(S)源到要使用它们的文件中。唯一需要export的时候是,如果您正在运行某个子进程,希望能够访问您定义的名称。

前面已经说过,在将来,当您遇到这样的问题时,请记住首先检查helpman --从长远来看,它可以为您节省很多麻烦。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/672159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档