# Bash (Bourne Again Shell)

Adres: https://softwaredictionary.org/tr/terimler/bash
Kategori: Programlama Dilleri
Son güncelleme: 2026-10-03
Okunuşu: beş

Kısaca: Bash, çoğu Linux sisteminde varsayılan Unix kabuğu ve betik dilidir; komutları etkileşimli yazmak ve görevleri betiklerle otomatikleştirmek için kullanılır.

## Bash nedir?

Bash, Brian Fox tarafından GNU Projesi için yazıldı ve 1989'da Bourne kabuğunun özgür bir alternatifi olarak yayımlandı; adındaki kelime oyunu da buradan gelir (Bourne Again, yeniden doğan). Çoğu Linux dağıtımında ve uzun yıllar macOS'ta varsayılan kabuk oldu; macOS 2019'da varsayılanını, gündelik kullanımda büyük ölçüde uyumlu olan zsh'e çevirdi.

Bir dil olarak Bash programları birbirine yapıştırır. Komutlar pipe'larla bağlanır, `grep error app.log | wc -l`; çıktıları `$(...)` ile değişkenlere alınabilir; betikler de değişkenler, koşullar, döngüler ve fonksiyonlar ekler. Bir betik `#!/usr/bin/env bash` gibi bir shebang satırıyla başlar ve `chmod +x` ile çalıştırılabilir yapılır.

Bu da Bash'i otomasyonun doğal aracı yapar: derleme ve dağıtım adımları, CI hatları, container giriş noktaları, sunucu kurulumu ve küçük veri işleri. Stack Overflow geliştirici anketlerinde Bash/Shell düzenli olarak en çok kullanılan diller arasında yer alır, çünkü neredeyse her geliştirici biraz yazar.

Sık yapılan bir yanlış, Bash'in her boyuttaki program için uygun olduğunu düşünmektir. Tırnak kuralları, kelime bölme (word splitting) ve hata yönetimi tuzaklarla doludur: tırnaksız değişkenler dosya adlarındaki boşluklarda bozulur ve varsayılan olarak başarısız bir komut betiği durdurmaz. Her değişkeni tırnağa almak, `set -euo pipefail` ile başlamak, betikleri ShellCheck ile kontrol etmek ve mantık karmaşıklaştığında Python'a geçmek sorunların çoğunu önler.

## Önemli noktalar

- Bash, 1989'da yayımlanan bir Unix kabuğu ve betik dilidir.
- Çoğu Linux sisteminde varsayılan komut satırıdır.
- Pipe'lar, değişkenler, döngüler ve fonksiyonlar programları birbirine yapıştırır.
- Derleme, dağıtım ve CI otomasyonunun gündelik aracıdır.
- Tuzaklarından kaçınmak için değişkenleri tırnağa alın, set -euo pipefail ve ShellCheck kullanın.

## Örnek: Küçük ve güvenli bir Bash betiği

```bash
#!/usr/bin/env bash
set -euo pipefail          # stop on errors, unset variables and failed pipes

log_dir="${1:-/var/log/myapp}"
threshold=10

count=$(grep -c "ERROR" "$log_dir/app.log" || true)

if (( count > threshold )); then
  echo "Too many errors: $count" >&2
  exit 1
fi

for file in "$log_dir"/*.log; do   # quoted, so spaces in names are safe
  gzip --keep "$file"
done
echo "Archived logs, $count errors found."
```

## Sık sorulan sorular

**Bash ile kabuk (shell) arasındaki fark nedir?**

Kabuk, komutları okuyup çalıştıran herhangi bir programdır. Bash belirli bir kabuktur; diğerleri arasında sh, zsh, fish ve PowerShell vardır.

**Bash bir programlama dili mi?**

Evet. Değişkenleri, koşulları, döngüleri ve fonksiyonları vardır; bu yüzden tam bir betik dilidir. Yine de büyük uygulamalar için değil, komutları çalıştırıp birleştirmek için tasarlanmıştır.

**Bash'i Windows'ta kullanabilir miyim?**

Evet; gerçek bir Linux ortamı çalıştıran Windows Subsystem for Linux (WSL) ile ya da Git for Windows ile gelen Git Bash ile.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
