Zigged 시리즈: 환경 변수 접근

발행: (2026년 6월 9일 PM 12:51 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

Cover image for You have been zigged (series) : Accessing environment variables

Black Tornado


블로그 03

환경 변수 접근하기

환경 변수는 운영 체제가 프로세스를 시작하기 직전에 전달하는 키‑값 쌍입니다. 주로 런타임 시 프로세스의 설정에 사용됩니다. C/C++에서는 환경 변수를 main 함수의 인자로 전달받습니다. Zig에서는 main 함수에 전달되는 init 객체를 통해 환경 변수에 접근할 수 있습니다. 어떻게 동작하는지 살펴보겠습니다.

프로그램 – Zig를 사용해 상속된 모든 환경 변수를 출력하기

모든 환경 변수를 출력하려면 환경 변수 이터레이터를 활용합니다.

// environment_vars1.zig
const std = @import("std");

pub fn main(init: std.process.Init) !void {
    var env_vars_iterator = init.environ_map.iterator();

    // setup stdout writer
    var buffer: [1024]u8 = undefined;
    var file_writer = std.Io.File.Writer.init(.stdout(), init.io, &buffer);
    var stdout_writer = &file_writer.interface;

    while (env_vars_iterator.next()) |env_var| {
        try stdout_writer.print("{s} \n {s}\n\n", .{ env_var.key_ptr.*, env_var.value_ptr.* });
    }
    try stdout_writer.flush();
}

Enter fullscreen mode

Exit fullscreen mode

프로그램은 zig run environment_vars1.zig 로 실행할 수 있습니다. 실행하면 모든 환경 변수가 콘솔에 출력됩니다. 실행 파일을 만들려면 zig build-exe -O ReleaseSafe environment_vars1.zig 를 사용하세요.

프로그램 – 사용자가 선택한 환경 변수 값을 Zig로 출력하기

이번 예제에서는 stdin 으로부터 입력을 받을 수 있는 Reader 를 설정합니다. 먼저 앞서 사용한 이터레이터로 모든 환경 변수 이름을 출력하고, 그 뒤에 사용자가 입력한 이름에 해당하는 변수 값을 get 함수로 가져와 출력합니다. 존재하지 않는 변수명을 입력하면 InvalidEnvVariableEntered 오류를 반환합니다.

// environment_vars2.zig
const std = @import("std");

pub fn main(init: std.process.Init) !void {
    // setting up stdout writer
    var stdout_buffer: [1024]u8 = undefined;
    var file_writer: std.Io.File.Writer = .init(.stdout(), init.io, &stdout_buffer);
    var stdout_writer = &file_writer.interface;

    // setting up stdin reader
    var stdin_buffer: [1024]u8 = undefined;
    var file_reader: std.Io.File.Reader = .init(.stdin(), init.io, &stdin_buffer);
    var stdin_reader = &file_reader.interface;

    try stdout_writer.print("Printing all environment variable names...\n", .{});
    var env_vars_iterator = init.environ_map.iterator();
    while (env_vars_iterator.next()) |env_var| {
        try stdout_writer.print(" {s}\n", .{env_var.key_ptr.*});
    }

    // fetch the name of env variable whose value we need to display
    try stdout_writer.print("Enter the name of an environment variable to see its value :", .{});
    try stdout_writer.flush();
    const userinput = try stdin_reader.takeDelimiterExclusive('\n');
    const userinput_trimmed = std.mem.trimEnd(u8, userinput[0..userinput.len], "\r");
    const env_var_value = init.environ_map.get(userinput_trimmed);
    if (env_var_value == null) {
        try stdout_writer.flush();
        return error.InvalidEnvVariableEntered;
    }
    try stdout_writer.print("{s} => {s}\n", .{ userinput_trimmed, env_var_value.? });
    try stdout_writer.flush();
}

Enter fullscreen mode

Exit fullscreen mode

프로그램은 zig run environment_vars2.zig 로 실행할 수 있습니다. 실행 파일을 만들려면 zig build-exe -O ReleaseSafe environment_vars2.zig 를 사용하세요.

읽어주셔서 감사합니다. 계속됩니다.

0 조회
Back to Blog

관련 글

더 보기 »

Eidentic 소개

Today we're releasing Eidentic, an open-source TypeScript SDK for building AI agents with self-improving memory and the production fundamentals built in — not b...

Typescript의 타입

Introdução Tipos são uma forma de definir a “forma” ou o contrato dos dados que estamos usando no código. Pensando em Javascript puro, ele é dinâmico: você pode...