如何在Nushell中从标准.env键值对文件加载环境变量?
在Nushell中加载标准.env文件的方法
要在Nushell中加载标准格式的.env文件(保持文件兼容性,无需修改为Nu脚本),可以通过以下方案实现:
核心实现思路
读取.env文件的每一行,过滤空行和注释行,拆分键值对,去除值两端的引号后,设置为Nushell环境变量。
单行命令快速加载
如果只是临时加载,直接运行以下命令(替换./.env为你的.env文件路径):
open ./.env | lines | where {|line| not ($line starts_with "#" or $line is empty) } | each {|line| let split_idx = $line index-of "=" let key = $line[0..$split_idx-1] let value = $line[$split_idx+1..-1] | str trim '"' | str trim "'" $env."($key)" = $value }
封装为可复用函数
如果需要频繁使用,建议将逻辑封装成函数,添加到你的Nushell配置文件(比如config.nu)中:
def load-env [path: string] { open $path | lines | where {|line| not ($line starts_with "#" or $line is empty) } | each {|line| # 兼容值中包含等号的场景(如PASSWORD="abc=123") let split_idx = $line index-of "=" let key = $line[0..$split_idx-1] let value = $line[$split_idx+1..-1] | str trim '"' | str trim "'" $env."($key)" = $value } }
之后即可通过load-env ./.env命令快速加载指定的.env文件。
功能说明
- 支持处理值中包含等号的场景,避免拆分错误
- 自动去除值两端的单/双引号,匹配.env文件的常见格式
- 跳过空行和
#开头的注释行,保留标准.env语法 - 完全保留.env文件原始结构,不影响其他Shell或工具的兼容性
内容的提问来源于stack exchange,提问作者NotTheDr01ds
相关产品推荐
相关产品推荐

