setenv(3) — Linux manual page

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | ATTRIBUTES | STANDARDS | HISTORY | CAVEATS | BUGS | SEE ALSO | COLOPHON

setenv(3) Library Functions Manual setenv(3)

NAME top

 setenv - change or add an environment variable

LIBRARY top

 Standard C library (libc, -lc)

SYNOPSIS top

 #include <stdlib.h>
 int setenv(const char *name, const char *value, int overwrite);
 int unsetenv(const char *name);
 Feature Test Macro Requirements for glibc (see
 feature_test_macros(7)):
 setenv(), unsetenv():
 _POSIX_C_SOURCE >= 200112L
 || /* glibc <= 2.19: */ _BSD_SOURCE

DESCRIPTION top

 The setenv() function adds the variable name to the environment
 with the value value, if name does not already exist. If name
 does exist in the environment, then its value is changed to value
 if overwrite is nonzero; if overwrite is zero, then the value of
 name is not changed (and setenv() returns a success status). This
 function makes copies of the strings pointed to by name and value
 (by contrast with putenv(3)).
 The unsetenv() function deletes the variable name from the
 environment. If name does not exist in the environment, then the
 function succeeds, and the environment is unchanged.

RETURN VALUE top

 setenv() and unsetenv() functions return zero on success, or -1 on
 error, with errno  set to indicate the error.

ERRORS top

 EINVAL name is NULL, points to a string of length 0, or contains
 an '=' character.
 ENOMEM Insufficient memory to add a new variable to the
 environment.

ATTRIBUTES top

 For an explanation of the terms used in this section, see
 attributes(7).
 ┌──────────────────────────┬───────────────┬─────────────────────┐
 │ Interface Attribute Value │
 ├──────────────────────────┼───────────────┼─────────────────────┤
 │ setenv(), unsetenv() │ Thread safety │ MT-Unsafe const:env │
 └──────────────────────────┴───────────────┴─────────────────────┘

STANDARDS top

 POSIX.1-2008.

HISTORY top

 POSIX.1-2001, 4.3BSD.
 Prior to glibc 2.2.2, unsetenv() was prototyped as returning void;
 more recent glibc versions follow the POSIX.1-compliant prototype
 shown in the SYNOPSIS.

CAVEATS top

 POSIX.1 does not require setenv() or unsetenv() to be reentrant.

BUGS top

 POSIX.1 specifies that if name contains an '=' character, then
 setenv() should fail with the error EINVAL; however, versions of
 glibc before glibc 2.3.4 allowed an '=' sign in name.

SEE ALSO top

 clearenv(3), getenv(3), putenv(3), environ(7)

COLOPHON top

 This page is part of the man-pages (Linux kernel and C library
 user-space interface documentation) project. Information about
 the project can be found at 
 ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report
 for this manual page, see
 ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
 This page was obtained from the tarball man-pages-6.15.tar.gz
 fetched from
 ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
 2025年08月11日. If you discover any rendering problems in this HTML
 version of the page, or you believe there is a better or more up-
 to-date source for the page, or you have corrections or
 improvements to the information in this COLOPHON (which is not
 part of the original manual page), send a mail to
 man-pages@man7.org
Linux man-pages 6.15 2025年05月17日 setenv(3)

Pages that refer to this page: ul(1), clearenv(3), getenv(3), libsystemd(3), libudev(3), pmgetconfig(3), putenv(3), sd-bus(3), sd_bus_add_match(3), sd_bus_add_node_enumerator(3), sd_bus_add_object(3), sd_bus_add_object_manager(3), sd_bus_attach_event(3), sd_bus_call(3), sd_bus_call_method(3), sd_bus_can_send(3), sd_bus_close(3), sd_bus_creds_get_pid(3), sd_bus_creds_new_from_pid(3), sd_bus_default(3), sd_bus_emit_signal(3), sd_bus_enqueue_for_read(3), sd_bus_error(3), sd_bus_error_add_map(3), sd-bus-errors(3), sd_bus_get_current_handler(3), sd_bus_get_fd(3), sd_bus_get_name_creds(3), sd_bus_get_name_machine_id(3), sd_bus_interface_name_is_valid(3), sd_bus_is_open(3), sd_bus_list_names(3), sd_bus_message_append(3), sd_bus_message_append_array(3), sd_bus_message_append_basic(3), sd_bus_message_append_string_memfd(3), sd_bus_message_append_strv(3), sd_bus_message_at_end(3), sd_bus_message_copy(3), sd_bus_message_dump(3), sd_bus_message_get_cookie(3), sd_bus_message_get_monotonic_usec(3), sd_bus_message_get_signature(3), sd_bus_message_get_type(3), sd_bus_message_new(3), sd_bus_message_new_method_call(3), sd_bus_message_new_method_error(3), sd_bus_message_new_signal(3), sd_bus_message_open_container(3), sd_bus_message_read(3), sd_bus_message_rewind(3), sd_bus_message_seal(3), sd_bus_message_sensitive(3), sd_bus_message_set_destination(3), sd_bus_message_set_expect_reply(3), sd_bus_message_skip(3), sd_bus_message_verify_type(3), sd_bus_negotiate_fds(3), sd_bus_new(3), sd_bus_path_encode(3), sd_bus_pending_method_calls(3), sd_bus_process(3), sd_bus_query_sender_creds(3), sd_bus_reply_method_error(3), sd_bus_reply_method_return(3), sd_bus_request_name(3), sd_bus_send(3), sd_bus_set_address(3), sd_bus_set_close_on_exit(3), sd_bus_set_connected_signal(3), sd_bus_set_description(3), sd_bus_set_exit_on_disconnect(3), sd_bus_set_fd(3), sd_bus_set_method_call_timeout(3), sd_bus_set_property(3), sd_bus_set_sender(3), sd_bus_set_server(3), sd_bus_set_watch_bind(3), sd_bus_slot_get_bus(3), sd_bus_slot_ref(3), sd_bus_slot_set_description(3), sd_bus_slot_set_destroy_callback(3), sd_bus_slot_set_floating(3), sd_bus_slot_set_userdata(3), sd_bus_start(3), sd_bus_track_add_name(3), sd_bus_track_new(3), sd_bus_wait(3), sd-daemon(3), sd-device(3), sd_device_get_syspath(3), sd-event(3), sd_event_add_child(3), sd_event_add_defer(3), sd_event_add_inotify(3), sd_event_add_io(3), sd_event_add_memory_pressure(3), sd_event_add_signal(3), sd_event_add_time(3), sd_event_exit(3), sd_event_get_fd(3), sd_event_new(3), sd_event_now(3), sd_event_run(3), sd_event_set_signal_exit(3), sd_event_set_watchdog(3), sd_event_source_get_event(3), sd_event_source_get_pending(3), sd_event_source_set_description(3), sd_event_source_set_destroy_callback(3), sd_event_source_set_enabled(3), sd_event_source_set_exit_on_failure(3), sd_event_source_set_floating(3), sd_event_source_set_prepare(3), sd_event_source_set_priority(3), sd_event_source_set_ratelimit(3), sd_event_source_set_userdata(3), sd_event_source_unref(3), sd_event_wait(3), sd_get_seats(3), sd-hwdb(3), sd_hwdb_get(3), sd_hwdb_new(3), sd-id128(3), sd_id128_get_machine(3), sd_id128_randomize(3), sd_id128_to_string(3), sd-journal(3), sd_journal_add_match(3), sd_journal_print(3), sd-json(3), sd_listen_fds(3), sd-login(3), sd_login_monitor_new(3), sd_machine_get_class(3), sd_notify(3), sd_path_lookup(3), sd_seat_get_active(3), sd_session_is_active(3), sd_uid_get_state(3), sd-varlink(3), sd_varlink_push_fd(3), sd_varlink_send(3), sd_varlink_set_description(3), sd_watchdog_enabled(3), environ(7)



HTML rendering created 2025年09月06日 by Michael Kerrisk, author of The Linux Programming Interface.

For details of in-depth Linux/UNIX system programming training courses that I teach, look here.

Hosting by jambit GmbH.

Cover of TLPI

Web Analytics Made Easy - StatCounter

AltStyle によって変換されたページ (->オリジナル) /