set -g 和 set -x 之间的区别

set -g 和 set -x 之间的区别

我目前正在从 bash 配置迁移到 fish,但在转换我的 bash 导出时遇到了问题。似乎在 Fish 中有三种方法可以完成这项工作,但我不知道应该使用哪一种,或者它们是否有我不知道的副作用

set -g VAR value
set -x VAR value
set -xg VAR value

当然,它们的作用肯定不一样。有人能解释一下它们的区别以及它们在什么情况下适用吗?

答案1

不,它们的作用并不相同。标志与、和标志-x正交。前者只是在变量上设置导出属性。后三个设置变量的范围。您可以在函数内部使用全局、未导出和内部函数来创建导出的本地范围实例。当控制权从函数返回时,全局范围将重新出现,并且不会被导出。-g-l-uVARset -lx VAR valueVAR

如果您使用的是最新版本(2.7,也许是 2.6),您可以set --show VAR显示所有三个范围内的值以及每个值是否被导出。

相关内容