Dapatkan direktori dari mana skrip dipanggil

10

Saya punya skrip doSmthdi /usr/bin. Apakah mungkin untuk mendapatkan dan mencetak direktori tempat skrip dipanggil ?

Jadi jika saya panggil doSmthdari /home/meoutput akan /home/me.

Primož Kralj
sumber
Dalam bahasa apa?
jordanm
Uhh, dalam bash :)
Primož Kralj

Jawaban:

11

Saat Anda menjalankan perintah di shell, proses baru mewarisi direktori kerja induk. Berikut adalah dua cara mendapatkan direktori kerja:

echo "$PWD" # variable
pwd         # builtin command
jordanm
sumber
1

Dengan "direktori itu dipanggil dari" Anda tampaknya berarti direktori kerjanya. Anda dapat mengubah ini di dalam skrip menggunakan misalnya cd,, tetapi sebelum Anda melakukannya, pwdakan mencetaknya. Itu juga kemungkinan berada dalam variabel$PWD

Jika Anda memerlukan direktori kerja awal setelah mengubahnya, simpan saja di bagian atas skrip Anda (sebelum mengubahnya)

#!/bin/bash
initial_wd=`pwd`

# ... do a lot of stuff ...
# ⋮

cd "$initial_wd"

Jika Anda menggunakan ini untuk kembali ke direktori tempat Anda memulai, lihat juga pushddan popd.

derobert
sumber
3
Dalam bash, ada juga "$ OLDPWD".
jordanm
@jordanm Memang ada, tapi itu belum tentu menjadi direktori kerja awal (misalnya, jika Anda telah menggunakan cddua kali)
derobert
$ OLDPWD adalah yang saya butuhkan; Saya menjalankan skrip bash dari CMD Prompt pada Win7 dan ini adalah variabel lingkungan yang menampung direktori tempat saya menjalankan skrip. Cheers
Darren Bishop