如何在Fish shell中设置变量?

时间:2018-11-14 03:17:04

标签: linux ubuntu-16.04 fish

我在Ubuntu(基本OS和Linux Mint)中的鱼壳中的set命令不起作用。变量保持为空,甚至教程中的示例也不起作用,即:

  

(set foo hi->#将变量$ foo的值设置为'hi'。)。

在脚本中,我尝试执行以下操作

set COUNTRY US CN MX

但是当我想用$COUNTRY调用变量时,没有答案。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您真的使用fish shell吗?因为您的示例对我有用:

$ set COUNTRY US CN MX
$ echo $COUNTRY
US CN MX
$ set --show COUNTRY
$COUNTRY: not set in local scope
$COUNTRY: set in global scope, unexported, with 3 elements
$COUNTRY[1]: length=2 value=|US|
$COUNTRY[2]: length=2 value=|CN|
$COUNTRY[3]: length=2 value=|MX|
$COUNTRY: not set in universal scope

我怀疑您正在尝试在其他过程中使用COUNTRY。在这种情况下,您需要使用set -x COUNTRY US CN MX导出var。但是请注意,鱼变种是数组,并且导出一个具有多个值的变种对子​​进程是不可理解的(除非子进程是鱼壳)。

另外,听起来您可能正在尝试通过fish脚本在父进程中修改变量。那行不通。您不能修改父进程的变量。即使它们是环境变量也是如此。这不是鱼的限制。它是UNIX流程模型设计中固有的。