Bagaimana saya bisa mendapatkan direktori kerja saat ini?

Saya ingin memiliki script yang mengambil direktori kerja ke sebuah variabel. Bagian yang perlu direktori seperti ini dir = pwd. Hal itu hanya mencetak pwd bagaimana cara mendapatkan direktori kerja saat ini menjadi variabel?

Mengomentari pertanyaan (5)
Larutan

Ada's tidak perlu melakukan itu,'s sudah in variabel:

$ echo $PWD
/home/terdon

The PWD variabel didefinisikan oleh POSIX dan akan bekerja pada semua POSIX-compliant kerang:

PWD

yang Ditetapkan oleh shell dan cd utilitas. Di shell nilai harus dimulai dari lingkungan sebagai berikut. Jika nilai untuk PWD diteruskan ke shell di lingkungan ketika itu dijalankan, nilai mutlak path dari direktori kerja saat ini yang tidak lebih dari {PATH_MAX} byte termasuk mengakhiri null byte, dan nilai yang tidak mengandung komponen yang titik atau dot-dot, kemudian shell akan PWD untuk nilai dari lingkungan. Sebaliknya, jika nilai bagi penyandang disabilitas lolos ke shell di lingkungan ketika hal ini dijalankan, nilai absolut path direktori kerja saat ini, dan nilai yang tidak mengandung komponen yang titik atau dot-dot, maka hal ini tidak ditentukan apakah shell set PWD untuk nilai dari lingkungan atau set PWD untuk path yang akan menjadi output oleh pwd -P. Jika tidak, sh utilitas set PWD ke path yang akan menjadi output oleh pwd -P. Dalam kasus-kasus di mana PWD diatur ke nilai dari lingkungan, nilai dapat mengandung komponen-komponen yang mengacu pada tipe file symbolic link. Dalam kasus-kasus di mana PWD diatur ke path yang akan menjadi output oleh pwd -P, jika ada cukup izin pada direktori kerja saat ini, atau pada setiap orang tua dari direktori tersebut, untuk menentukan apa yang akan path jadi, nilai PWD yang tidak ditentukan. Tugas untuk variabel ini dapat dapat diabaikan. Jika aplikasi set atau unsets nilai PWD, yang perilaku cd dan pwd utilitas yang tidak ditentukan.


Untuk lebih umum dan jawabannya, cara untuk menyimpan output dari perintah dalam variabel adalah dengan menyertakan perintah di $() atau ` ` (backticks):

var=$(command)

atau

var=`command`

Dari keduanya, $ () lebih disukai karena lebih mudah untuk membangun kompleks perintah seperti command0 $(command1 $(command2 $(command3))).

Komentar (0)

dir=$(pwd)

Ini lebih portable dan disukai atas backticks metode.

Menggunakan $() memungkinkan anda untuk sarang perintah

misalnya : mech_pwd=$(pwd; echo di $(hostname))

Komentar (1)

Anda dapat menggunakan variabel lingkungan $PWD, atau menulis sesuatu seperti:

dir=`pwd`
Komentar (0)

Anda perlu menggunakan perintah substitusi untuk menyimpan output dari pwd perintah untuk variabel. Perintah substitusi dapat menggunakan backticks atau dolar karakter. Seperti ini:

$ mkdir "/tmp/new dir"
$ cd "/tmp/new dir"
$ CWD="$(pwd)"
$ echo $CWD
/tmp/new dir
$ cd ~
$ echo $CWD
/tmp/new dir
$ pwd
/home/ja
Komentar (0)

Nilai dari direktori kerja saat ini bisa berbeda. Jika anda menggunakan tautan simbolis untuk mendapatkan direktori saat ini, pwd akan memberikan hasil yang berbeda dari /usr/bin/pwd. Karena anda menggunakan bash, saya akan menggunakan:

dir=$(/usr/bin/pwd)

atau sebagai per komentar:

dir=$(pwd -P)

seperti yang saya don't seperti kembali tanda kutip karena mereka dapat't sarang.

Komentar (1)