# Dotenv 机密文件
CLI 允许与空间和时间网络进行交互式通信。

By [Breezeandmoon](https://paragraph.com/@breezeandmoon) · 2024-01-13

---

处理本地机密时，最佳实践是将机密保存在环境变量文件中，而不是将这些机密硬编码到脚本中。常见的约定是使用“dotenv”文件，因为它受许多编程语言支持并且经常出现在文件模板中。dotenv 文件的默认值是（这是整个文件名，而不是扩展名），但大多数 dotenv 库都支持任何名称。`.gitignore.env`

👍
--

在 dotenv 文件中保密的做法是可选的，但强烈鼓励这样做。这允许您在没有秘密的情况下共享脚本，使这些脚本更加可移植和更安全。

文档中环境变量的假设
==========

在使用[Space and Time 文档](https://docs.spaceandtime.io/docs)时，您会发现许多示例，其中大多数使用[sxtcli](https://dash.readme.com/project/space-and-time/v1.0/docs/sxtcli)和文件的组合来包含机密。为了保持一致性，这些文档将假设以下环境变量可用：`.env`

![](https://storage.googleapis.com/papyrus_images/7462fefaaa98fd57092f83554bbef12feb9690cd674395a15b8bc75ed9bc917a.png)

Dotenv 示例
---------

Dotenv 文件通常是结构化的，以便可以通过 shell 命令执行它们，从而将它们作为环境变量加载。示例文件可能如下所示：`.env`

Shell

API\_URL="[https://api.example.com](https://api.example.com)"

USERID="Jane\_Doe" USER\_PUBLIC\_KEY="mNczmcOoMqHQzaW0/lXuCRa5wYYPcQms92q0G+VzKtY=" USER\_PRIVATE\_KEY="7zoZMnvJv+spt5lUjF0Isuyxi9jlwJCCWCglJmSVghc=" USER\_PASSWORD="Aok3pnEPK"

> 🚧
> --
> 
> 等号之前或之后没有空格。某些操作系统中的 Shell 命令可以将空格注册为有效字符并将其包含在变量中。

要进行测试，请尝试通过首先加载 .env 文件来验证空间和时间（使用有效凭据），然后使用：`sxtcli authenticate`

Shell

Shell

    echo "Load .env file"
    . ./.env
    
    echo "Login to SxT"
    sxtcli authenticate login --url=$API_URL --userId=$USERID --publicKey=$USER_PUBLIC_KEY --privateKey=$USER_PRIVATE_KEY
    
    echo "Save Access Token for later use"
    ACCESS_TOKEN="eyJ0eXBlIjoiYWNjZXNzIiwia2lkIjoiZTUxNDVkYmQtZGNmYi00ZjI..."
    

或者，更简洁地说：

Shell

echo "Load .env file and get ACCESS\_TOKEN"

. ./.env

ACCESS\_TOKEN=$( sxtcli authenticate login --url=$API\_URL --userId=$USERID --publicKey=$USER\_PUBLIC\_KEY --privateKey=$USER\_PRIVATE\_KEY | awk 'NR==2{ print $2 }' )

您可能遇到的其他环境变量
============

在遍历文档时，您可能还会遇到示例中使用的其他环境变量：

![](https://storage.googleapis.com/papyrus_images/fde1109845d43d624fc20f6275479d7e89a96c9561475d8d0d63dfe75f484e7a.png)

---

*Originally published on [Breezeandmoon](https://paragraph.com/@breezeandmoon/dotenv-cli)*
