Env (Unix)

env
YazarRichard Mlynarik,
David MacKenzie,
Assaf Gordon
GeliştiriciFree Software Foundation
İlk yayınlanma1980'ler
İşletim sistemiUnix, Unix-like, Inferno
PlatformÇoklu platform
TürKomut satırı aracı
LisansGPLv3+
Resmî sitesiGNU Coreutils – env

env, Unix ve Unix-benzeri işletim sistemlerinde yer alan bir kabuk komutudur. POSIX standardı kapsamında tanımlanmıştır ve genellikle çevresel değişkenleri listelemek veya belirli bir komutu modifiye edilmiş bir ortam altında çalıştırmak için kullanılır.

Genel Kullanım

env komutu temel olarak iki ana işlev için kullanılır:

  1. Ortam değişkenlerini listelemek
  2. Belirli bir komutu, geçici olarak değiştirilmiş bir çevre değişkeni ortamı altında çalıştırmak

Varsayılan olarak hiçbir argüman verilmediğinde, env mevcut ortam değişkenlerini anahtar-değer çiftleri biçiminde standart çıktıya yazar.

$ env
PATH=/usr/bin:/bin
HOME=/home/kullanici
LANG=en_US.UTF-8
...

Alternatif olarak, bir veya daha fazla `anahtar=değer` çiftinden sonra gelen bir komut belirterek bu komutun sadece bu geçici ortam altında çalıştırılması sağlanabilir:

$ env VAR1=foo VAR2=bar ./uygulama

Bu, kalıcı olarak sistem ortamını değiştirmeden belirli görevleri gerçekleştirmek için oldukça kullanışlıdır.

Shebang Kullanımı

env komutunun önemli bir kullanım alanı, Unix sistemlerde kullanılan shebang (`#!`) yapısında yorumlayıcının yolunu belirtmek için tercih edilmesidir. Bu kullanımda env, sistemin PATH ortam değişkeni içinde yorumlayıcıyı bulur:

#!/usr/bin/env python3

Bu yöntem, yorumlayıcının sabit bir konuma bağımlı kalmadan çalışmasını sağlar, böylece betiklerin taşınabilirliği artar.

POSIX Uyumluluğu

env komutu POSIX standardına dahildir. POSIX'e uygun sistemlerde aşağıdaki kullanım garantilenmiştir:

env [name=value]... [utility [argument...]]

Bazı varyantlar GNU genişletmeleri içerir (örneğin `-u` ile bir değişkeni ortamdan çıkarmak gibi).

Seçenekler

GNU coreutils versiyonu şu anahtarları destekler:

Uygulama ve Uyumluluk

env komutu GNU Core Utilities (coreutils) paketi içerisinde yer alır. FreeBSD, OpenBSD, NetBSD, macOS, AIX, Solaris, Inferno gibi birçok sistemde farklı versiyonları bulunur. Genellikle `/usr/bin/env` dizininde yer alır.

Tarihçe

env komutunun geçmişi 1980'li yıllara kadar uzanır. GNU versiyonu ilk olarak David MacKenzie tarafından yazılmış ve Free Software Foundation tarafından sürdürülebilir hale getirilmiştir.

Güvenlik Notları

Yorumlayıcı çağrılarında `env` kullanımı sistem PATH değişkenine bağlı olduğundan, sistemde düşük güvenlikli veya sahte yorumlayıcılar bulunuyorsa riskli olabilir. Bu nedenle bazı sistem yöneticileri statik yollarla (`#!/usr/bin/python3` gibi) yorumlayıcı kullanmayı tercih eder.

Kaynakça

  1. ↑ IEEE. "env - POSIX Specification". 3 Haziran 2025 tarihinde Wayback Machine sitesinde arşivlendi.
  2. ↑ Python Software Foundation. "PEP 394 – The 'python' Command on Unix-Like Systems." 28 Mayıs 2025 tarihinde Wayback Machine sitesinde arşivlendi.
  3. ↑ GNU Project. "Invoking env." *GNU Coreutils Manual*. 17 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi.
  4. ↑ Red Hat. "Security Considerations for Shebangs with env"[ölü/kırık bağlantı]
  5. The Linux Documentation Project. "Linux Environment Variables." 21 Nisan 2025 tarihinde Wayback Machine sitesinde arşivlendi.

Kaynakça

Dış bağlantılar

Vikikitap
Vikikitap
Vikikitap'ta bu konu hakkında daha fazla bilgi var:
Guide to Unix