从 PowerShell 切换到 Bash:在 Visual Studio Code 中设置 WSL 并运行 Azure CLI
Source: Dev.to
请提供您希望翻译的具体文本内容,我将为您翻译成简体中文。
为什么切换到 Bash?
- 许多 Azure、DevOps 和云教程都是为 Bash 编写的。
- PowerShell 和 Bash 的语法规则不同(例如,PowerShell 中变量使用
$)。 - 了解两种 shell 可以帮助你避免“语法相关”的错误,并且更容易阅读以 Linux 为中心的文档。
1. 安装 Windows 子系统 Linux(WSL)
1.1 通过 PowerShell(管理员)快速安装
# 以管理员身份打开 PowerShell 并运行:
wsl --install
会发生什么?
- 该命令会启用所需的 Windows 功能(
Windows Subsystem for Linux和Virtual Machine Platform)。 - 然后会提示你 重启 计算机。
- 重启后,再次运行
wsl --install将下载并安装默认的 Linux 发行版(Ubuntu)。
1.2 手动启用功能(备用方案)
- 按 Win + R,输入
optionalfeatures.exe,然后按 Enter。 - 在 打开或关闭 Windows 功能 对话框中,勾选:
- Windows Subsystem for Linux
- Virtual Machine Platform
- 点击 确定 → 立即重启。
重启后,打开提升权限的 PowerShell 并运行:
wsl --install
1.3 首次运行设置
- Ubuntu 发行版会自动下载并安装。
- 系统会要求你创建一个 UNIX 用户名 和 密码。
- 为了安全,密码字符会被隐藏——直接输入后按 Enter 即可。
现在,你已经拥有一个可通过 wsl 访问的功能完整的 Linux 环境。
2. 在 Visual Studio Code 中打开 Bash 终端
- 启动 VS Code。
- 在顶部菜单中选择 Terminal → New Terminal。
- 点击终端面板中 plus (+) 图标旁的 下拉箭头。
- 选择 Bash 配置文件(如果已安装 WSL,系统会自动列出)。
终端将从 PowerShell 切换为 Bash,并显示类似如下内容:
username@DESKTOP:~$
2.1 从 Bash 访问 Windows 文件夹
cd /mnt/c/Path/To/Your/Folder
# 示例:
cd "/mnt/c/Users/YourName/Documents/Linux Servers"
注意: Windows 磁盘会挂载在 /mnt/<drive-letter>/ 下。
2.2 缩短 Bash 提示符(可选)
默认情况下 Bash 会显示完整路径。若只想显示主机名和当前文件夹:
# 将此行添加到 ~/.bashrc 以实现永久更改
echo "PS1='\\h:\\W$ '" >> ~/.bashrc
source ~/.bashrc
结果提示符:
DESKTOP:Servers$
3. 在 Bash 中使用 Azure CLI
打开 Bash 后,您可以像在 PowerShell 中一样运行任何 Azure CLI 命令:
# Log in to Azure
az login
# List your subscriptions
az account list --output table
# Create a resource group (example)
az group create --name MyResourceGroup --location eastus
由于 Azure CLI 是跨平台的,同样的命令在 PowerShell 和 Bash 中都可使用。
4. 关键差异回顾
| 特性 | PowerShell | Bash (WSL) |
|---|---|---|
| 变量前缀 | $var | $var (相同),但数组、哈希的语法不同 |
| 命令链 | ; 或 && | ; 或 && |
| 路径分隔符 | \(Windows) | /(Linux) |
| 提示符自定义 | $PROFILE / $Host.UI.RawUI | PS1 变量 |
| VS Code 中的默认终端 | PowerShell | Bash(如果已安装 WSL) |
了解这些差异有助于您在特定教程或工作流中决定使用哪种 shell。
5. 快速参考命令
| 任务 | PowerShell | Bash |
|---|---|---|
| 安装 WSL | wsl --install (admin) | Same |
| 列出已安装的发行版 | wsl -l -v | Same |
| 在 VS Code 中打开 Bash | code . → Terminal → Bash | Same |
| 更改提示符 | N/A (use $PROFILE) | PS1='\\h:\\W$ ' |
| 重启 Windows | shutdown /r /t 0 | sudo reboot (inside WSL) |
🎉 一切就绪!
您现在拥有:
- 已安装并配置 WSL。
- 在 Visual Studio Code 中将 Bash 设为终端选项。
- 能够在类 Linux 环境中运行 Azure CLI 命令。
随意进一步探索——安装其他 Linux 发行版(wsl --list --online),自定义 Bash 配置文件,或在此设置中集成其他 DevOps 工具(Docker、Terraform 等)。祝编码愉快!
PowerShell 与 Bash 变量语法
我注意到 PowerShell 与 Bash 之间的第一个区别是变量的定义方式。
- PowerShell – 变量必须以
$符号开头。 - Bash – 变量在 定义时 不使用
$符号;只有在 引用 变量时才使用$。
使用 Bash 创建 Azure 资源组
Azure 中的 资源组 是一个容器,用于保存与某个应用程序相关的资源(例如,虚拟机、存储帐户、数据库)。
步骤
-
定义变量
RG="Testing-10-rg" LOCATION="eastus"或者使用换行续行字符(
\)一起定义:RG="Testing-10-rg" \ LOCATION="eastus" -
创建资源组
az group create --name "$RG" --location "$LOCATION"- 在命令中引用变量时,需要在变量名前加
$,这样 Bash 会替换为对应的值。 - 检查输出中的
provisioningState,以确认资源组已成功创建。
- 在命令中引用变量时,需要在变量名前加
-
验证创建
az group list --output table -
删除资源组(可选)
az group delete --name "$RG"Azure 会提示:
Are you sure you want to perform this operation? (y/n)输入
y或yes进行确认。
结论
在不同的 shell 环境之间切换起初可能会让人感到困惑,尤其是当细微的语法差异导致命令表现异常时。从 PowerShell 转到 Bash 让我了解了不同 shell 对以下方面的处理方式:
- 变量定义与展开
- 命令语法
- 文件系统导航
通过安装 Windows Subsystem for Linux (WSL) 并在 Visual Studio Code 中使用它,我能够在 Windows 上直接运行基于 Linux 的 Bash 环境,同时通过 Azure CLI 管理 Azure 资源。
这一转变带来了挑战——例如变量语法和路径约定的差异——但也让我在多个终端环境之间的工作更加得心应手。这些技能在以下场景中特别有用:
- 云基础设施
- Linux 服务器
- 自动化工具(如脚本、CI/CD 流水线)
同时掌握 PowerShell 和 Bash 能为开发者和云工程师在跨平台工作时提供更大的灵活性。
Discussion
如果你也在学习 Azure 或 DevOps 工具,欢迎分享在 PowerShell 与 Bash 之间切换时最让你困惑的地方!