在Elvish Shell中扩展$PATH路径列表的方法问询
在Elvish Shell中扩展$paths环境变量的正确方法
通过Homebrew在macOS上安装的Elvish默认$paths列表为:
~> echo $paths [/usr/bin /bin /usr/sbin /sbin]
如果想添加/usr/local/bin和/usr/local/sbin但不想硬写完整列表,你之前的写法不符合Elvish的列表规则,正确操作方式如下:
正确写法
使用**列表拼接操作符++**合并两个列表,这是Elvish中扩展列表的标准方式:
set paths = $paths ++ [/usr/local/bin /usr/local/sbin]
若希望新路径优先被系统搜索(放在原有路径前面),可以调整顺序:
set paths = [/usr/local/bin /usr/local/sbin] ++ $paths
之前写法失败的原因
- 用
+操作符时:paths + [/usr/local/bin /usr/local/sbin]会把原列表的每个元素和新列表的元素拆分成多个独立值返回,赋值给paths时就会触发「参数数量不匹配」的错误; - 用
[$paths /usr/local/bin /usr/local/sbin]时:你是把整个$paths列表作为单个元素塞进新列表,而$paths要求每个元素必须是字符串,因此出现「path必须是字符串」的类型错误。
内容的提问来源于stack exchange,提问作者Nikolaj Š.
相关产品推荐
相关产品推荐

