GNU/Linux >> Belajar Linux >  >> Linux

Dari Mana Skrip Shell Dijalankan?

Saya memiliki skrip shell di /usr/bin . Sebut saja hello .

Ini berisi ini:

 echo "I am located in $PWD"
 echo "I am called from this directory: ???"

Menjalankan hello dari /home/Documents Saya mengharapkan output berikut:

 I am located in /usr/bin
 I am called from this directory: /home/Documents

Bagaimana saya bisa mendapatkan jalur direktori tempat skrip dijalankan?

Jawaban yang Diterima:

Tidak dapat mengomentari jawaban lain, jadi saya memposting di sini. Seperti yang dikatakan, dirname hanya membaca $0 dan mengambil nama direktori, jadi jika Anda memanggil sesuatu seperti ../../directory/something.sh itu tidak menyelesaikan titik-titik itu tetapi hanya mengembalikan ../../directory . Alih-alih menggunakan ekspansi subkulit dengan cd dan pwd , Anda dapat menggunakan perintah yang sangat cerdas readlink yang sebenarnya tidak hanya menyelesaikan direktori bertitik tetapi juga semua tautan simbolik. Oleh karena itu saya menyarankan

  echo "I am located at $(readlink -e -- "$0")"

Anda dapat menggunakan dirname lain sekitar ini untuk mendapatkan direktori alih-alih file.


Linux
  1. Cara Membuat Script Shell Selalu Jalankan Sebagai Root?

  2. Bagaimana cara menjalankan program dengan direktori kerja yang berbeda dari saat ini, dari shell Linux?

  3. Bagaimana cara menjalankan skrip Shell ketika file atau direktori berubah?

  1. Menjalankan skrip shell secara paralel

  2. Direktori skrip Shell saat ini?

  3. Jalankan skrip yang disalurkan dari stdin (Linux/Shell Scripting)

  1. Cara menjalankan skrip shell saat startup

  2. Jalankan skrip shell di terminal baru dari terminal saat ini

  3. Direktori perubahan skrip Shell dengan variabel