야미의 개발

[개발 생산성 올리기] Zsh 함수들을 자동으로 로드하기 - 매번 로그인 토큰 받기 귀찮을 때 본문

카테고리 없음

[개발 생산성 올리기] Zsh 함수들을 자동으로 로드하기 - 매번 로그인 토큰 받기 귀찮을 때

채야미 2025. 8. 31. 16:09

개발하다 보면 자주 쓰는 작은 쉘 함수들을 만들어두고 싶은 경우가 많습니다.


저는 특히 API 토큰을 발급받아 복사하고 설정하는게 너무 귀찮은데, 아시는 분이 좋은 방법을 알려주시더라구요.

~/.zshrc에 간단한 설정만 추가하면, 함수들을 .zsh 파일로 분리해 디렉토리에서 관리하고 Zsh 시작할 때 자동 로드되도록 할 수 있습니다.

 


1. 함수 로더 만들기

먼저 ~/.zshrc에 다음 함수를 추가합니다.

다음의 명령어로 편집을 합니다.

vi ~/.zshrc

 

이런 내용 추가!

load_zsh_functions() {
    local func_dir="$HOME/.zsh/functions"

    # 디렉토리 생성 (없으면 자동 생성)
    [[ ! -d "$func_dir" ]] && mkdir -p "$func_dir"

    # .zsh 파일이 있으면 전부 로드
    if ls "$func_dir"/*.zsh >/dev/null 2>&1; then
        for file in "$func_dir"/*.zsh; do
            if [[ -r "$file" ]]; then
                source "$file"
                # echo "Loaded: $(basename "$file")"   # 디버그용
            fi
        done
    else
        # 파일이 없으면 예시 파일을 하나 만들어줌
        cat > "$func_dir/example.zsh" << 'EOF'
# 예시 함수들
function hello() {
    echo "Hello from zsh functions!"
}

function current_time() {
    date "+%Y-%m-%d %H:%M:%S"
}
EOF
        echo "Created example function file: $func_dir/example.zsh"
        source "$func_dir/example.zsh"
    fi
}

# Zsh 시작할 때 함수 자동 로드
load_zsh_functions

2. 함수 디렉토리 구성

이제 ~/.zsh/functions 안에 원하는 함수를 파일로 나눠서 넣을 수 있습니다.
예를 들어 kohee.zsh라는 파일을 만들고:

# kohee.zsh : 로그인 토큰 발급 후 클립보드에 복사
kohee-token() {
    local baseurl="${1:-https://api.dev}"
    local email="${2:-test@test.com}"
    local password="${3:-test}"

    echo "Logging in as $email on $baseurl ..."

    local response=$(curl -s -X 'POST' \
        "$baseurl/api/v1/auth/login" \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -d "{
            \"email\": \"$email\",
            \"password\": \"$password\"
        }")

    local token=$(echo "$response" | jq -r '.accessToken')

    if [[ "$token" != "null" && "$token" != "" ]]; then
        echo "$token" | pbcopy
        echo "Token copied to clipboard!"
    else
        echo "Login failed:"
        echo "$response"
    fi
}

 

수정을 했으니 다시 로드!

source ~/.zshrc

3. 사용 방법

  • 터미널을 새로 열면 ~/.zsh/functions/*.zsh 안의 모든 함수가 자동 로드됩니다.
  • 함수 실행:
kohee-token                 # dev 서버 로그인 (기본 계정)
kohee-token http://localhost:8080 my@id.com mypass   # 로컬 로그인
hello                       # example.zsh의 함수
current_time                # 현재 시간 출력

 

 

 

이렇게 하니 매번 스웨거에서 비번 치고.. 클릭하고 받아서 복사하는 과정이 없어서 정말 편하더라구여

강추!

Comments