env (Unix)
| Yazar | Richard Mlynarik, David MacKenzie, Assaf Gordon |
|---|---|
| Geliştirici | Free Software Foundation |
| İlk yayınlanma | 1980'ler |
| İşletim sistemi | Unix, Unix-like, Inferno |
| Platform | Çoklu platform |
| Tür | Komut satırı aracı |
| Lisans | GPLv3+ |
| Resmî sitesi | GNU 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.[1]
Genel Kullanım
[değiştir | kaynağı değiştir]env komutu temel olarak iki ana işlev için kullanılır:
- Ortam değişkenlerini listelemek
- 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ı
[değiştir | kaynağı değiştir]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.[2]
POSIX Uyumluluğu
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]GNU coreutils versiyonu şu anahtarları destekler:
- `-u`, `--unset=VAR` – Ortamdan belirtilen değişkeni çıkarır
- `-i`, `--ignore-environment` – Tüm mevcut çevre değişkenlerini temizleyip sadece belirttiklerini kullanır
- `--help` – Yardım mesajı gösterir
- `--version` – Sürüm bilgisini gösterir
Uygulama ve Uyumluluk
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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.[3]
Güvenlik Notları
[değiştir | kaynağı değiştir]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.[4]
Kaynakça
[değiştir | kaynağı değiştir]- ^ IEEE. "env - POSIX Specification". [1] 3 Haziran 2025 tarihinde Wayback Machine sitesinde arşivlendi.
- ^ Python Software Foundation. "PEP 394 – The 'python' Command on Unix-Like Systems." [2] 28 Mayıs 2025 tarihinde Wayback Machine sitesinde arşivlendi.
- ^ GNU Project. "Invoking env." *GNU Coreutils Manual*. [3] 17 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi.
- ^ Red Hat. "Security Considerations for Shebangs with env"
Kaynak hatası: <references> grubunda "" içinde tanımlanan "POSIX" adlı <ref> etiketinin içeriği yok. (Bkz: Kaynak gösterme)
Kaynak hatası: <references> grubunda "" içinde tanımlanan "GNUmanual" adlı <ref> etiketinin içeriği yok. (Bkz: Kaynak gösterme)
Kaynak hatası: <references> grubunda "" içinde tanımlanan "PythonPEP" adlı <ref> etiketinin içeriği yok. (Bkz: Kaynak gösterme)
Kaynak hatası: <references> üzerinde tanımlanan "TLDP" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme)
Kaynak hatası: <references> grubunda "" içinde tanımlanan "RedHat" adlı <ref> etiketinin içeriği yok. (Bkz: Kaynak gösterme)
Kaynakça
[değiştir | kaynağı değiştir]External links
[değiştir | kaynağı değiştir]- : set the environment for command invocation – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
- – Inferno Kullanıcı komutları kılavuzu
- env 17 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi.—GNU coreutils'teki kılavuz sayfası.
- – FreeBSD Kullanıcı komutları kılavuzu
- : run a program in a modified environment – OpenBSD General Commands Manual
- : set and print environment – NetBSD General Commands Manual
- – Linux Kullanıcı komutları kılavuzu
- – Solaris 10 User Commands Reference Manual
