Tujuh variabel Bash yang tidak terduga

Melanjutkan rangkaian catatan tentang kurang dikenal fungsi bash, saya akan menunjukkan tujuh variabel yang mungkin tidak Anda ketahui.

1) PROMPT_COMMAND

Anda mungkin sudah mengetahui cara memanipulasi prompt untuk menampilkan berbagai informasi berguna, namun tidak semua orang mengetahui bahwa Anda dapat menjalankan perintah shell setiap kali prompt ditampilkan.

Faktanya, banyak manipulator prompt kompleks menggunakan variabel ini untuk menjalankan perintah guna mengumpulkan informasi yang ditampilkan di prompt.

Coba jalankan ini di shell baru dan lihat apa yang terjadi pada sesi tersebut:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

Jika lari history di konsol, Anda akan menerima daftar perintah yang sebelumnya dijalankan di bawah akun Anda.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Setelah variabel ini disetel, entri baru mencatat waktu beserta perintahnya, sehingga outputnya akan terlihat seperti ini:

1871 Saya menjalankan ini pada: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Saya menjalankan ini pada: 01/05/19 13:38:19 curl bbc.co.uk 1873 Saya menjalankan ini di : 01/05/19 13:38:41 Sudo vi /etc/resolv.conf 1874 Saya menjalankan ini pada: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Saya menjalankan ini pada: 01 /05/19 13:39:25 sudo su -

Pemformatan cocok dengan karakter dari man date.

3) CDPATH

Untuk menghemat waktu pada baris perintah, Anda dapat menggunakan variabel ini untuk mengubah direktori semudah Anda mengeluarkan perintah.

Sebagai PATH, variabel CDPATH adalah daftar jalur yang dipisahkan titik dua. Saat Anda menjalankan perintah cd dengan jalur relatif (yaitu tanpa garis miring), secara default shell mencari nama yang cocok di folder lokal Anda. CDPATH akan mencari di jalur yang Anda berikan untuk direktori yang ingin Anda tuju.

Jika Anda menginstal CDPATH dengan cara ini:

$ CDPATH=/:/lib

lalu masukkan:

$ cd /home
$ cd tmp

maka kamu akan selalu masuk /tmp di mana pun Anda berada.

Namun hati-hati, karena jika Anda tidak menentukan yang lokal dalam daftar (.) folder, maka Anda tidak akan dapat membuat folder lainnya tmp dan lakukan seperti biasa:

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

Ups!

Ini mirip dengan kebingungan yang saya rasakan ketika saya menyadari bahwa folder lokal tidak termasuk dalam variabel yang lebih familiar PATH... tetapi Anda harus melakukannya di variabel PATH karena Anda mungkin tertipu untuk menjalankan perintah palsu dari beberapa kode yang diunduh.

Milik saya ditentukan oleh titik awal:

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

Pernahkah Anda bertanya-tanya, mengetik exit apakah ini akan membawa Anda keluar dari shell bash Anda saat ini ke shell "induk" yang lain, atau akankah itu menutup jendela konsol sepenuhnya?

Variabel ini melacak seberapa dalam Anda berada di bash shell. Jika Anda membuat terminal baru, terminal tersebut disetel ke 1:

$ echo $SHLVL
1

Kemudian, jika Anda memulai proses shell lain, jumlahnya bertambah:

$ bash
$ echo $SHLVL
2

Ini bisa sangat berguna dalam skrip di mana Anda tidak yakin apakah harus keluar atau tidak, atau melacak di mana Anda berada.

5) LINENO

Variabel ini juga berguna untuk menganalisis keadaan saat ini dan melakukan debug LINENO, yang melaporkan jumlah perintah yang dijalankan dalam sesi sejauh ini:

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

Ini paling sering digunakan saat men-debug skrip. Memasukkan garis seperti echo DEBUG:$LINENO, Anda dapat dengan cepat menentukan di mana Anda berada (atau tidak) dalam skrip.

6) REPLY

Jika seperti saya, Anda biasanya menulis kode seperti ini:

$ read input
echo do something with $input

Mungkin mengejutkan bahwa Anda tidak perlu khawatir tentang pembuatan variabel sama sekali:

$ read
echo do something with $REPLY

Ini melakukan hal yang sama.

7) TMOUT

Untuk menghindari berada di server produksi terlalu lama karena alasan keamanan atau secara tidak sengaja menjalankan sesuatu yang berbahaya di terminal yang salah, pengaturan variabel ini bertindak sebagai perlindungan.

Jika tidak ada yang dimasukkan selama beberapa detik, shell akan keluar.

Artinya, ini adalah alternatif sleep 1 && exit:

$ TMOUT=1

Sumber: www.habr.com

Tambah komentar