GNU/Linux >> Belajar Linux >  >> Linux

Jalankan Skrip Bash Saat Memasuki Direktori?

Apa cara terbaik untuk mengeksekusi skrip saat masuk ke direktori?
Saat saya pindah ke direktori baru, saya ingin bash menjalankan skrip projectSettings.bash seperti halnya RVM.

Jawaban yang Diterima:

Anda dapat membuat cd sebuah fungsi (dan pop dan pushd ), dan membuatnya mendeteksi jika Anda memasuki direktori tertentu.

cd () { builtin cd "[email protected]" && chpwd; }
pushd () { builtin pushd "[email protected]" && chpwd; }
popd () { builtin popd "[email protected]" && chpwd; }
unset_all_project_settings () {
  # do whatever it takes to undo the effect of projectSettings.bash,
  # e.g. unset variables, remove PATH elements, etc.
}
chpwd () {
  case $PWD in
    /some/directory|/some/other/directory) . ./projectSettings.bash;;
    *) unset_all_project_settings;;
  esac
}

Jangan lakukan ini di direktori yang belum Anda daftar putih, karena akan sangat mudah bagi seseorang untuk mengelabui Anda agar menjalankan kode arbitrer — mengirimi Anda arsip, jadi Anda unzip, ubah ke direktori yang dibuatnya, dan Anda' sekarang telah menjalankan kode penyerang.

Saya tidak merekomendasikan pendekatan ini, karena itu berarti skrip akan dieksekusi bahkan jika Anda memasuki direktori itu karena alasan tertentu yang tidak terkait dengan pengerjaan proyek. Saya sarankan memiliki fungsi khusus yang mengubah direktori proyek dan sumber skrip pengaturan.

myproj () {
  cd /some/directory && . ./projectSettings.bash
}

Linux
  1. Menggunakan Bash untuk otomatisasi

  2. Penanganan kesalahan dalam skrip Bash

  3. Gunakan Ekstensi .sh Atau .bash Untuk Skrip Bash?

  1. Menggunakan Perintah Tidur Linux di Skrip Bash

  2. Jalankan skrip bash dari URL

  3. Jalankan semua skrip shell di folder

  1. Mengapa Saya Tidak Dapat Menggunakan Cd Dalam Skrip Bash??

  2. Tidak dapat menjalankan skrip bash bahkan sebagai root?

  3. Bash Tidak Lagi Mengubah Direktori