Ubuntu(基本操作系统和 Linux Mint)中的 Fish shell 中的 set 命令不起作用。变量保持为空,甚至教程中的示例也不起作用,即:
(set foo hi --> # Sets the value of the variable $foo to be 'hi'.).
在脚本中我尝试执行以下操作,
set COUNTRY US CN MX
但是当我想通过 $COUNTRY
调用变量时却没有答案。
我做错了什么?
最佳答案
您真的在使用 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
导出变量。但请注意,fish 变量是数组,导出具有多个值的 var 不会被子进程理解(除非该子进程是一个 Fish shell)。
此外,听起来您可能正在尝试通过 Fish 脚本修改父进程中的变量。那是行不通的。您不能修改父进程的变量。即使它们是环境变量也不行。这不是 fish 的限制。它是 UNIX 进程模型设计中固有的。
关于linux - 如何在 Fish shell 中设置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53292693/