bash 函数内部变量_使用源命令将函数和变量导入Bash

bash 函数内部变量

登录Linux Shell时,您将继承特定的工作环境。 的环境中 ,在壳的背景下,这意味着有已经被设置为你的变量,从而确保你的命令工作按预期。 例如, PATH环境变量定义外壳程序在哪里查找命令。 没有它,几乎您尝试在Bash中执行的所有操作都会因未找到命令错误而失败。 在执行日常任务时,您的环境对您几乎是不可见的,但至关重要。

有多种方法可以影响您的Shell环境。 您可以在~/.bashrc~/.profile等配置文件中进行修改,可以在启动时运行服务,还可以创建自己的自定义命令或为自己的Bash函数编写脚本。

通过源添加到您的环境

Bash(以及其他一些shell)具有一个称为source的内置命令。 这就是令人困惑的地方: source执行与command相同的功能. (是的,这可是一个点),这是一样source作为Tcl命令(其中可能出现在屏幕上,如果你输入man source )。 实际上,内置的source命令根本不在您的PATH中。 这是Bash的一部分附带的命令,要获取有关它的更多信息,可以键入help source

. 该命令符合POSIXsource命令不是POSIX定义的,但可以与互换. 命令。

helpsource命令在您当前的shell中执行一个文件。 “在您当前的外壳程序中”子句很重要,因为它表示它不会启动子外壳程序。 因此,使用source执行的任何操作都发生在内部,并影响您当前的环境。

在研究source如何影响您的环境之前,请在测试文件上尝试使用source ,以确保其按预期执行代码。 首先,创建一个简单的Bash脚本并将其保存为名为hello.sh的文件:


   
   
#!/usr/bin/env bash
echo "hello world"

使用source ,即使不设置可执行位也可以运行此脚本:


   
   
$ source hello.sh
hello world

您也可以使用内置的. 命令以得到相同的结果:


   
   
$ . hello.sh
hello world

source. 命令成功执行测试文件的内容。

设置变量和导入功能

您可以使用source将文件“导入”到您的Shell环境中,就像您可以使用C或C ++中的include关键字引用一个库或使用Python中的import关键字引入一个模块一样。 这是最常见的用途之一source ,这是一个常见的默认列入.bashrc文件, source文件名为.bash_aliases让你定义的任何自定义别名,当您登录得到导入到您的环境。

这是导入Bash函数的示例。 首先,在名为myfunctions的文件中创建一个函数。 这将打印您的公共IP地址和您的本地IP地址:


   
   
function myip ( ) {
        curl http: // icanhazip.com      

        ip addr | grep inet $IP | \
        cut -d "/" -f 1 | \
        grep -v 127 \.0 | \
        grep -v \:\: 1 | \
        awk '{$1=$1};1'
}

将函数导入您的shell:

 $  source myfunctions 

测试新功能:


   
   
$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c: 2121 :ce12:ef79:0e77:59d1
inet 10.8.42.38

搜索源

在Bash中使用source时,它将在当前目录中搜索您引用的文件。 并非在所有Shell中都发生这种情况,因此,如果您不使用Bash,请查看文档。

如果Bash找不到要执行的文件,它将搜索您的PATH 。 同样,这并不是所有shell的默认设置,因此,如果您不使用Bash,请查看文档。

这些都是Bash中不错的便利功能。 此行为出奇的强大,因为它使您可以将常用功能存储在驱动器上的集中位置,然后将您的环境视为集成开发环境(IDE)。 您不必担心函数的存储位置,因为您知道它们在/usr/include本地等效目录中,因此无论您在何处获取它们,Bash都可以找到它们。

例如,您可以创建一个名为~/.local/include的目录作为常见功能的存储区,然后将此代码块放入您的.bashrc文件中:


   
   
for i in $HOME / .local / include /* ;
  do source $i
done

~/.local/include中的自定义函数的任何文件“导入”到您的shell环境中。

当您使用source或时,Bash是唯一同时搜索当前目录和PATH shell . 命令。

使用源代码开源

使用source. 执行文件可以是一种方便的方式,可以在保持更改模块化的同时影响环境。 下次考虑将大代码块复制并粘贴到.bashrc文件中时,请考虑将相关功能或别名组放入专用文件中,然后使用source提取它们。

翻译自: https://opensource.com/article/20/6/bash-source-command

bash 函数内部变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值