zsh:`source`命令不会重新加载功能

飞三明治

(这是在带有zsh 5.7.1的MacOS上)

这是我在zsh中加载自定义函数的方式:

# Custom functions
fpath=($HOME/.zfunc $fpath)
autoload -Uz mackupbackup
autoload -Uz tac
autoload -Uz airplane
autoload -Uz wakeMyDesktop

每个函数在~/.zfunc目录中都是其自己的文件请注意,由于,此目录被符号链接到另一个目录mackup

我编写了一个新函数,将当前提交哈希复制到剪贴板。我在$ fpath中创建了一个名为的文件ghash,编写了函数,并在$ fpath中添加了新autoload.zshrc并执行了source ~/.zshrc

这是功能

# copy the commit hash of the given git reference, or HEAD if none is given
ref=$1

if [[ $ref ]]; then
  git rev-parse $1 | pbcopy
else
  git rev-parse HEAD | pbcopy
fi

采购后.zshrc,该功能可用并且可以使用,但是我想添加一行以打印确认该功能可以使用:

echo "Copied $(pbpaste) to clipboard"

因此,我添加了这一行,保存了文件,然后.zshrc再次获得资源。

我再次运行该函数,但其​​行为没有改变!

我以为我做错了事,所以我一直对功能进行更改,并且.zshrc没有任何资源总而言之,我进行了.zshrc22次资源调拨,至此,该操作花费了37秒来完成...

然后我意识到也许没有在重载该函数,所以我运行zsh了一个新实例(耗时约1秒钟),并且该函数按预期开始工作!

有人知道为什么source要使用我的新功能,但是在功能更改时没有更新吗?

额外的问题:为什么source ~/.zshrc每次运行它都需要更长的时间?

JdeBP

如果实际可行,很少会采购rc文件,因为人们很少将其写为幂等。一个合适的例子就是您自己的情况,您fpath每次都路径前添加相同目录,这当然意味着每次搜索该路径都需要花费更长的时间。此外,毫无疑问,这不是您要做这类事情的唯一地方。

您也无法正确理解自动加载。如doco所述,在没有主体的情况下自动加载功能会在第一次执行该功能时发生显然,如果该函数已经加载,因此具有主体,则不会再次加载该函数。

您需要再次使用unfunction该功能autoload

.zshrcZ shell源代码中的示例包含一个freload()函数,该函数对所有作为其参数命名函数都执行此操作。它也做typeset -U path cdpath fpath manpath,注意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

zsh不会在提示中重新加载功能

来自分类Dev

实现“重新加载”功能

来自分类Dev

jQuery重新加载功能

来自分类Dev

Ionic serve命令不会检测到保存更改,并且不会自动重新加载

来自分类Dev

ngTable 不会重新加载数据

来自分类Dev

当我使用 source 命令运行重新加载 bash 终端时,为什么我不能使用 && 链接命令?

来自分类Dev

调用setCollectionViewLayout:animated不会重新加载UICollectionView

来自分类Dev

jQuery-页面不会重新加载

来自分类Dev

登录后不会重新加载Facebook api

来自分类Dev

套件中的@IntegrationTest属性不会重新加载

来自分类Dev

UpdatePanel不会阻止按钮重新加载页面

来自分类Dev

Python子进程不会重新加载Nginx

来自分类Dev

使用Ajax时reCaptcha不会重新加载

来自分类Dev

jQuery .submit()方法不会重新加载页面

来自分类Dev

重新加载后,PHP页面不会更改

来自分类Dev

UIScrollView中的UITableVIew不会重新加载

来自分类Dev

NSFetchedResultsController不会根据请求重新加载数据

来自分类Dev

UItableView 不会快速重新加载数据

来自分类Dev

单击按钮后网站不会重新加载

来自分类Dev

集合视图不会重新加载 (Swift)

来自分类Dev

在我的模板中,值不会重新加载

来自分类Dev

ngTable重新加载功能不更新表

来自分类Dev

使用Leiningens Checkout功能重新加载代码

来自分类Dev

从App-delegate重新加载或运行功能

来自分类Dev

重新加载自调用功能

来自分类Dev

提示命令从.bash_history重新加载

来自分类Dev

重新启动并加载Windows分区的命令

来自分类Dev

即使使用“加载”,div也不会重新加载更改的内容

来自分类Dev

重新加载所有正在运行的zsh实例

Related 相关文章

热门标签

归档