我在Ubuntu(基本OS和Linux Mint)中的鱼壳中的set命令不起作用。变量保持为空,甚至教程中的示例也不起作用,即:
(set foo hi->#将变量$ foo的值设置为'hi'。)。
在脚本中,我尝试执行以下操作
set COUNTRY US CN MX
但是当我想用$COUNTRY
调用变量时,没有答案。
我在做什么错了?
答案 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流程模型设计中固有的。