gpt4 book ai didi

linux - Shell 函数 - 命令调用后不活动

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:11 27 4
gpt4 key购买 nike

~/bin 中,我有一个名为 foo 的 shell 脚本,在这个脚本中,我有以下内容,而且只有以下内容:

#!/bin/bash
func(){
echo this is func
}

现在,每当我登录时,如果我调用 foo,我希望整个 shell 脚本都能运行。也就是说,在命令行中输入 foo 后,就会出现一个名为 func 的 shell 函数,它只是简单地回应“this is func”。然而,这种情况并非如此。即使我调用了 foofunc 仍然不存在。

如何使该功能存在?事实上,我可以在 ~/.bashrc 中创建别名,但假设我们只限于 bin 中的 shell 脚本。

编辑:foo 被标记为可执行。我可以毫无问题地调用 foo;也就是说,如果我键入 foo,那么我不会收到任何标准错误,所以我知道 foo 已实现。但是,foo 中的函数 func 似乎不是。

最佳答案

如果将脚本作为命令运行,它会在子进程中运行,并且它对环境所做的任何更改都不会影响原始 shell 进程。如果你想让它修改原来的shell进程,你需要source它。

source ~/bin/foo

. ~/bin/foo

如果 ~/bin 在您的 $PATH 中,您可以将其简化为

. foo

关于linux - Shell 函数 - 命令调用后不活动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415145/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com