Tujuh Variabel Bash yang Tidak Terduga

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

1) PROMPT_COMMAND


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

Bahkan, banyak manipulator cepat kompleks menggunakan variabel ini untuk mengeksekusi perintah untuk mengumpulkan informasi yang ditampilkan pada prompt.

Coba jalankan ini di shell baru dan Anda akan melihat apa yang terjadi dengan sesi:

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

2) HISTTIMEFORMAT


Jika Anda menjalankan history di konsol, Anda akan mendapatkan daftar perintah yang sebelumnya dieksekusi di bawah akun Anda.

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

Segera setelah variabel ini diset, catatan baru akan mencatat waktu bersama dengan perintah, sehingga hasilnya akan terlihat seperti ini:

 1871 I ran this at: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 I ran this at: 01/05/19 13:38:19 curl bbc.co.uk 1873 I ran this at: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 I ran this at: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 I ran this at: 01/05/19 13:39:25 sudo su - 

Memformat karakter yang cocok dari tanggal pria.

3) CDPATH


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

Seperti PATH , variabel CDPATH adalah daftar jalur yang dipisahkan oleh titik dua. Ketika Anda menjalankan cd dengan path relatif (yaitu, tanpa garis miring di awal), secara default shell mencari nama yang sesuai di folder lokal Anda. CDPATH akan mencari di jalur yang Anda berikan untuk direktori ke mana Anda ingin pergi.

Jika Anda menginstal CDPATH dengan cara ini:

 $ CDPATH=/:/lib 

lalu masukkan:

 $ cd /home $ cd tmp 

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

Namun, berhati-hatilah, karena jika Anda tidak menentukan folder lokal ( . ) Dalam daftar, maka Anda tidak dapat membuat folder tmp lain dan pergi ke sana, 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 PATH lebih akrab ... tetapi Anda harus melakukannya dalam variabel PATH karena Anda dapat diakali dengan menjalankan perintah palsu dari beberapa kode yang diunduh.

Saya diatur oleh titik awal:

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

4) SHLVL


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

Variabel ini melacak seberapa dalam Anda tertanam dalam bash shell. Jika Anda membuat terminal baru, maka diatur 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 akan keluar atau tidak, atau melacak di mana Anda berada dengan bersarang.

5) LINENO


Juga, untuk menganalisis keadaan saat ini dan debugging, variabel LINENO , yang melaporkan jumlah perintah yang dieksekusi dalam sesi hingga saat ini:

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

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

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 membuat variabel sama sekali:

 $ read echo do something with $REPLY 

Itu melakukan hal yang sama.

7) TMOUT


Agar tidak tetap 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 dalam jumlah detik yang ditentukan, shell keluar.

Artinya, ini adalah alternatif untuk sleep 1 && exit :

 $ TMOUT=1 

Source: https://habr.com/ru/post/id451492/


All Articles