PowerShell에서 Bash로 전환: WSL 설정 및 Visual Studio Code에서 Azure CLI 실행
Source: Dev.to
위에 제공된 링크 외에 번역할 텍스트가 포함되어 있지 않습니다. 번역을 원하는 본문을 알려주시면 한국어로 번역해 드리겠습니다.
왜 Bash로 전환해야 할까?
- 많은 Azure, DevOps 및 클라우드 튜토리얼이 Bash용으로 작성되어 있습니다.
- PowerShell과 Bash는 서로 다른 구문 규칙을 가지고 있습니다(예: PowerShell에서는 변수에
$사용). - 두 셸을 모두 이해하면 “구문 관련” 오류를 피할 수 있고, Linux 중심 문서를 따라가기 쉬워집니다.
1. Windows Subsystem for 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
- OK → 지금 다시 시작을 클릭합니다.
재시작 후 관리자 권한 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"
Note: 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이 설치된 경우) |
이러한 차이점을 이해하면 특정 튜토리얼이나 워크플로에 어떤 쉘을 사용할지 결정하는 데 도움이 됩니다.
5. 빠른 참고 명령
| Task | PowerShell | Bash |
|---|---|---|
| WSL 설치 | wsl --install (admin) | 동일 |
| 설치된 배포판 목록 | wsl -l -v | 동일 |
| VS Code에서 Bash 열기 | code . → Terminal → Bash | 동일 |
| 프롬프트 변경 | N/A (use $PROFILE) | PS1='\\h:\\W$ ' |
| Windows 재시작 | shutdown /r /t 0 | sudo reboot (inside WSL) |
🎉 준비 완료!
이제 다음을 갖추었습니다:
- WSL이 설치되고 구성되었습니다.
- Bash가 Visual Studio Code 내 터미널 옵션으로 제공됩니다.
- Linux‑스타일 환경에서 Azure CLI 명령을 실행할 수 있습니다.
추가 Linux 배포판(wsl --list --online)을 설치하고, Bash 프로필을 커스터마이즈하거나, 이 설정 내에서 다른 DevOps 도구(Docker, Terraform 등)를 통합해 보세요. 즐거운 코딩 되세요!
PowerShell vs 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를 입력합니다.
결론
쉘 환경을 전환하는 것은 처음에 혼란스러울 수 있습니다. 특히 작은 구문 차이 때문에 명령이 예상과 다르게 동작할 때 그렇습니다. PowerShell에서 Bash로 이동하면서 다음과 같은 차이를 이해하게 되었습니다:
- 변수 정의 및 확장
- 명령 구문
- 파일 시스템 탐색
**Windows Subsystem for Linux (WSL)**을 설치하고 이를 Visual Studio Code 안에서 사용함으로써 Windows에서 직접 Linux 기반 Bash 환경을 실행하면서 Azure CLI를 통해 Azure 리소스를 관리할 수 있었습니다.
전환 과정에서는 변수 구문과 경로 표기법이 달라지는 등 여러 도전 과제가 있었지만, 여러 터미널 환경을 자유롭게 다룰 수 있게 되었습니다. 이러한 기술은 특히 다음과 같은 작업에 유용합니다:
- 클라우드 인프라스트럭처
- Linux 서버
- 자동화 도구(예: 스크립트, CI/CD 파이프라인)
PowerShell과 Bash 모두를 이해하면 개발자와 클라우드 엔지니어가 다양한 플랫폼에서 더 큰 유연성을 발휘할 수 있습니다.
토론
Azure나 DevOps 도구를 배우고 있다면, PowerShell과 Bash 사이를 전환할 때 가장 혼란스러웠던 점을 자유롭게 공유해주세요!