10 min read

Oh My Azure Cloud Shell

Justin Yoo

리눅스 또는 맥의 터미널 환경, 혹은 윈도우의 WSL 환경을 사용하다 보면 oh-my-zsh을 들어봤거나 사용하고 있을 것이다. 또한 파워셸을 사용하고 있다면 oh-my-posh에 대해서도 들어봤거나 사용하고 있을 것이다. 애저에서도 애저 클라우드 셸 환경을 제공하는데, 여기서는 bash 셸 환경과 파워셸 기본 환경을 제공한다. 따라서, 만약 oh-my-zsh 혹은 oh-my-posh 구성을 적용하고 싶다면 별도로 환경 구성을 해야 한다.

이 포스트에서는 이를 자동으로 구성해주는 bash 셸 스크립트와 파워셸 스크립트에 대해 알아보기로 한다.

이 포스트에 사용된 스크립트 소스 코드는 이 깃헙 리포지토리에서 다운로드 받을 수 있다.

oh-my-zsh 적용하기

우선 애저 클라우드 셸oh-my-zsh 환경을 구성해 보자. 먼저 bash 프롬프트인지 확인한다. 만약 bash 프롬프트가 아니라면 bash 명령어를 이용해 bash 프롬프트로 바꾼다.

  1. 가장 먼저 oh-my-zsh 구성을 설치한다.

    sh -c "$(curl -fsSL \
    https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  2. 다음으로는 oh-my-zsh 용 플러그인을 설치한다. 다른 좋은 플러그인도 많지만, 여기서는 가장 널리 쓰이는 세가지 – zsh-completions, zsh-syntax-highlighting, zsh-autosuggestions – 정도만 설치한다. 추가적인 플러그인 설치가 더 필요하다면 아래와 같은 방법으로 설치하면 된다.

    # Plugin: zsh-completions
    git clone https://github.com/zsh-users/zsh-completions.git \
    ~/.oh-my-zsh/custom/plugins/zsh-completions
    # Plugin: zsh-syntax-highlighting
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
    ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
    # Plugin: zsh-autosuggestions
    git clone https://github.com/zsh-users/zsh-autosuggestions.git \
    ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
  3. 이어서 테마를 설치한다. 어떤 테마를 선택할지에 대해서는 취향에 따라 갈리겠지만, 여기서는 Spaceship 테마 또는 Powerlevel10k 테마를 설치한다.

    # Theme: Spaceship
    git clone https://github.com/spaceship-prompt/spaceship-prompt.git \
    ~/.oh-my-zsh/custom/themes/spaceship-prompt --depth=1
    ln -s ~/.oh-my-zsh/custom/themes/spaceship-prompt/spaceship.zsh-theme \
    ~/.oh-my-zsh/custom/themes/spaceship.zsh-theme
    # Theme: Powerlevel10k
    git clone https://github.com/romkatv/powerlevel10k.git \
    ~/.oh-my-zsh/custom/themes/powerlevel10k --depth=1
    ln -s ~/.oh-my-zsh/custom/themes/powerlevel10k/powerlevel10k.zsh-theme \
    ~/.oh-my-zsh/custom/themes/powerlevel10k.zsh-theme
  4. 만약 Powerlevel10k 테마를 설치했다면 아래 명령어를 통해 추가적인 환경 설정을 해 주어야 한다.

    p10k configure
  5. 애저 클라우드 셸은 bash 프롬프트를 기본값으로 사용한다. 그런데, 여기서는 sudo 명령어를 사용할 수 없기 때문에, zsh 프롬프트를 기본값이 되게끔 할 수 없다. 따라서, 아래와 같이 .bashrc 파일을 수정해서 zsh 프롬프트로 변경해 주어야 한다.

    bash -c zsh
  6. 여기까지 설정이 끝났다면, 애저 클라우드 셸을 종료하고 다시 시작한다. 혹은 source .bashrc 명령어를 실행시켜도 된다. 그러면 앞으로는 계속해서 oh-my-zsh 환경이 적용된 zsh 프롬프트를 사용할 수 있다.
  7. 만약 이 모든 설정을 자동화하고 싶다면 아래 명령어를 실행시켜도 좋다.

    # Download the GitHub repository
    git clone https://github.com/justinyoo/oh-my-azure-cloud-shell.git ~/oh-my-azure-cloud-shell
    # Install oh-my-zsh with the theme of "Spaceship"
    ~/oh-my-azure-cloud-shell/install.sh -t spaceship
    # Install oh-my-zsh with the theme of "Powerlevel10k"
    ~/oh-my-azure-cloud-shell/install.sh -t p10k
  8. 만약 Powerlevel10k 테마를 설치하고 난 뒤, 현재 시간을 보여주고 싶다거나 감추고 싶다거나 하려면 아래 명령어를 실행시키면 된다.

    # Turn on the clock feature
    ~/oh-my-azure-cloud-shell/switch-p10k-clock.sh -c
    # Turn off the clock feature
    ~/oh-my-azure-cloud-shell/switch-p10k-clock.sh

지금까지 애저 클라우드 셸oh-my-zsh 환경 구성을 하는 방법에 대해 알아보았다.

oh-my-posh 적용하기

이번에는 애저 클라우드 셸oh-my-posh 환경을 구성해 보자. 먼저 파워셸 프롬프트인지 확인한다. 만약 파워셸 프롬프트가 아니라면 pwsh 명령어를 이용해 파워셸 프롬프트로 바꾼다.

  1. 가장 먼저 oh-my-posh 모듈을 설치한다.

    Install-Module oh-my-posh -Scope CurrentUser -Repository PSGallery -Force
    Import-Module oh-my-posh -Scope Local -Force
  2. 이어서 테마를 선택한다. 앞서와 같이 어떤 테마를 선택할지에 대해서는 취향에 따라 갈리겠지만, 여기서는 Spaceship 테마 또는 Powerlevel10k - Rainbow 테마를 선택한다.

    # Theme: Spaceship
    Set-PoshPrompt -Theme spaceship
    # Theme: Powerlevel10k - Rainbow
    Set-PoshPrompt -Theme powerlevel10k_rainbow
  3. 아래 명령어를 실행시켜 터미널용 아이콘 모듈을 설치한다.

    Install-Module Terminal-Icons -Scope CurrentUser -Repository PSGallery -Force
    Import-Module Terminal-Icons -Scope Local -Force
  4. $PROFILE 파일을 생성해서 파워셸 실행시 자동으로 모듈이 설치되게끔 한다.

    if (!(Test-Path -Path $PROFILE)) {
    New-Item -ItemType File -Path $PROFILE -Force
    }
    # Theme: Spaceship
    Write-Output "
    Set-PoshPrompt -Theme spaceship
    Import-Module Terminal-Icons -Scope Local -Force
    " | Out-File -FilePath $PROFILE -Encoding UTF8 -Append -Force
    # Theme: Powerlevel10k - Rainbow
    Write-Output "
    Set-PoshPrompt -Theme powerlevel10k_rainbow
    Import-Module Terminal-Icons -Scope Local -Force
    " | Out-File -FilePath $PROFILE -Encoding UTF8 -Append -Force
  5. 마지막으로 아래 명령어를 실행시켜 $PROFILE 파일에 저장된 내용을 반영한다.

    . $PROFILE
  6. 만약 이 모든 설정을 자동화하고 싶다면 아래 명령어를 실행시켜도 좋다.

    # Download the GitHub repository
    git clone https://github.com/justinyoo/oh-my-azure-cloud-shell.git `
    ~/oh-my-azure-cloud-shell
    # Install oh-my-zsh with the theme of "Spaceship"
    ~/oh-my-azure-cloud-shell/install.ps1 -Theme spaceship
    # Install oh-my-zsh with the theme of "Powerlevel10k - Rainbow"
    ~/oh-my-azure-cloud-shell/install.ps1 -Theme p10k
  7. 만약 Powerlevel10k - Rainbow 테마를 설치하고 난 뒤, 현재 시간을 보여주고 싶다거나 감추고 싶다거나 하려면 아래 명령어를 실행시키면 된다.

    # Turn on the clock feature
    ~/oh-my-azure-cloud-shell/switch-p10k-clock.ps1 -WithClock
    # Turn off the clock feature
    ~/oh-my-azure-cloud-shell/switch-p10k-clock.ps1

지금까지 애저 클라우드 셸oh-my-posh 환경 구성을 하는 방법에 대해 알아보았다.


위와 같이 편의에 따라 oh-my-zsh 혹은 oh-my-posh, 혹은 둘 다 설치해서 사용한다면, 기존 로컬 개발환경의 터미널 경험을 그대로 애저 클라우드 셸에서도 사용할 수 있을 것이다.