您好,登录后才能下订单哦!
小编给大家分享一下如何使用source命令将函数和变量导入Bash,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
source 就像 Python 的 import 或者 Java 的 include。学习它来扩展你的 Bash 能力。
登录 Linux shell 时,你将继承特定的工作环境。对于 shell 而言,“环境”意味着已经为你设置了某些变量,以确保你的命令可以按预期工作。例如,PATH 环境变量定义 shell 从哪里查找命令。没有它,几乎在 Bash 中尝试执行的所有操作都会因“命令未发现” 错误而失败。在执行日常任务时,环境对你几乎是不可见的,但它很重要。
有多种方法可以影响你的 shell 环境。你可以在配置文件中进行修改,例如 ~/.bashrc
和 ~/.profile
,你可以在启动时运行服务,还可以创建自己的自定义命令或编写自己的 Bash 函数 。
Bash(以及其他一些 shell)有一个称为 source
的内置命令。这就是令人困惑的地方:source
执行与命令 .
相同的功能(是的,那只是一个点),而与 Tcl
命令的 source
不是同一个(如果你输入 man source
,也许在屏幕上显示的是它)。实际上,内置的 source
命令根本不在你的 PATH
中。这是 Bash 附带的命令,要获取有关它的更多信息,可以输入 help source
。
.
命令兼容 POSIX。 但 source
命令不是 POSIX 定义的,但可以与 .
命令互换使用。
根据 Bash help
,source
命令在你当前的 shell 中执行一个文件。 “在你当前的 shell 中” 这句很重要,因为它表示它不会启动子 shell。因此,用 source
执行的任何操作都发生在内部并影响当前环境。
在探讨 source
对环境的影响之前,请用 source
命令导入一个测试文件,以确保其按预期执行代码。首先,创建一个简单的 Bash 脚本并将其保存为 hello.sh
:
#!/usr/bin/env bashecho "hello world"
使用 source
,即使该脚本不设置可执行也可以运行:
$ source hello.shhello world
你也可以使用内置的 .
命令获得相同的结果:
$ . hello.shhello 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
测试新函数:
$ myip93.184.216.34inet 192.168.0.23inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1inet 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 $idone
这会将 ~/.local/include
中所有包含自定义函数的文件“导入”到 shell 环境中。
当你使用 source
或 .
命令时,Bash 是唯一搜索当前目录和 PATH
的 shell。
使用 source
或 .
来执行文件是影响环境同时保持变更模块化的一种便捷方法。在下次考虑将大量代码复制并粘贴到 .bashrc
文件中时,请考虑将相关函数或别名组放入专用文件中,然后使用 source
导入它们。
以上是“如何使用source命令将函数和变量导入Bash”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。