> For the complete documentation index, see [llms.txt](https://docs.nairpaa.me/linux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nairpaa.me/linux/bash-scripting/apa-itu-shell.md).

# Apa itu Shell?

Shell adalah program yang menjembatani user dengan sistem operasi (kernel). Dengan adanya shell kita bisa menjalankan suatu perintah pada sistem operasi.

## Jenis-Jenis Shell

Terdapat 2 jenis antarmuka shell, yaitu **Command Line Interface (CLI)** dan **Graphical User Interface (GUI)**.

### Graphical User Interface (GUI)

Beberapa contoh GUI shell pada linux:

* Gnome
* KDE
* Unity

### Command Line Interface (CLI)

Beberapa contoh CLI shell pada linux:

* bash
* zsh
* fish
* dash

## Mencari Tahu Shell yang Anda Gunakan

```bash
echo $SHELL
echo $0
```

![](https://1465282509-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M0ul96FEwa9_t1sKHOW%2F-MFKOex9wKtzDzoiFUDv%2F-MFKaZaPHzsPSMxc7H8j%2Fimage.png?alt=media\&token=ea26f46c-d62e-429c-8785-c5fe2fcd2446)

{% hint style="info" %}
Kebetulan shell yang saat ini saya gunakan adalah ZSH. Untuk mengetahui lebih lanjut tentang ZSH, silahkan baca artikel dari [codepolitan.com](https://www.codepolitan.com/memasang-zsh-dan-oh-my-zsh-di-linux-ubuntu-5a8eb22e1ae13).
{% endhint %}

## Melihat Shell yang Tersedia

```bash
cat /etc/shells
```

![](https://1465282509-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M0ul96FEwa9_t1sKHOW%2F-MFKOex9wKtzDzoiFUDv%2F-MFKb1evIi5bBrFEvTbV%2Fimage.png?alt=media\&token=9ed5955e-ed44-4b66-a260-6e2f6418aad2)

## Melihat Shell dari Setiap User

```bash
awk -F: '{print $1,"=",$7}' /etc/passwd   
```

![](https://1465282509-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M0ul96FEwa9_t1sKHOW%2F-MFFJqs18Msbf2d7LTDa%2F-MFFM9GV6Xsvmurk478S%2Fimage.png?alt=media\&token=95675a87-c561-4f74-9c28-db8468ae84a4)

{% hint style="info" %}
Informasi tentang `/usr/bin/nologin` dan `/bin/false` bisa Anda baca dari hasil diskusi di [stackexchange.com](https://unix.stackexchange.com/questions/10852/whats-the-difference-between-sbin-nologin-and-bin-false).
{% endhint %}

## Apa itu Shell Script?

**Shell script** adalah file yang berisi kumpulan perintah shell yang nantinya bisa kita eksekusi. Dengan shell script kita bisa membuat *automation* sehingga kita tidak lagi menjalankan kumpulan perintah secara manual. Shell script dapat berisi:

* `#!/bin/bash`: dibaca *shebang* yaitu shell yang digunakan
* `# Comments`: komentar
* `Commands`: **echo**, **cp**, **grep**, dll.
* `Statements`: (if, case, for, while, dsb)

### Hak Akses File

Shell script harus memiliki hak akses eksekusi (contoh: `-rws r-x r-x`)

### Menjalankan Shell Script

```bash
./script.sh # jika pada direktori yang sama
/home/user/script.sh # menggunakan abolute path
```
