Perintah pwd Linux: direktori kerja, jalur logis, dan jalur fisik
Perintah pwd menampilkan jalur absolut direktori kerja saat ini, yaitu direktori acuan proses untuk menafsirkan jalur relatif. Gunakan perintah ini untuk memeriksa lokasi terminal atau memastikan skrip dijalankan dari direktori yang Anda maksud.
Jika jalur melewati tautan simbolik, pwd -L mempertahankan nama jalur logis, sedangkan pwd -P menampilkan jalur setelah tautan diselesaikan. Pilih opsi secara eksplisit dalam skrip karena default bawaan shell dan program eksternal dapat berbeda.
Apa itu perintah pwd?
pwd adalah singkatan dari print working directory. Perintah ini menunjukkan direktori kerja shell atau proses saat dijalankan, bukan daftar isi direktori dan bukan lokasi file skrip.
pwd
Jika direktori kerja Anda adalah direktori proyek berikut, keluarannya dapat berupa:
/home/user/projects/web-app
Jalur relatif seperti config/settings.ini ditafsirkan dari direktori kerja. Karena itu, teks jalur yang sama dapat menunjuk file berbeda ketika perintah dijalankan dari direktori lain.
Sintaks dasar dan penggunaan
pwd [opsi]
pwd memeriksa direktori kerja prosesnya sendiri, bukan menerima jalur direktori lain sebagai target. Pada Linux yang memiliki direktori /var/log dan izin akses yang sesuai, coba:
pwd
cd /var/log && pwd
pwd setelah && hanya dijalankan jika perintah cd untuk berpindah direktori berhasil. Hasilnya biasanya /var/log, tetapi dapat berbeda jika komponennya merupakan tautan. Jika cd gagal, direktori kerja tetap seperti semula.
Perbedaan opsi -L dan -P
Keduanya menunjukkan direktori kerja yang sama dari dua sudut pandang: nama logis yang digunakan ketika berpindah dan jalur fisik setelah tautan simbolik diselesaikan.
| Opsi | Perilaku |
|---|---|
-L, --logical |
Menampilkan jalur logis yang valid. Nama tautan yang dilewati dapat tetap muncul dalam jalur. |
-P, --physical |
Menampilkan jalur direktori setelah tautan simbolik diselesaikan. |
Bentuk panjang --logical dan --physical pada tabel adalah opsi GNU Coreutils, bukan opsi yang dapat diasumsikan berlaku pada builtin Bash. Gunakan -L atau -P untuk contoh bawaan shell berikut.
Melihat jalur logis dengan -L
Contoh ini mengasumsikan /srv/current sudah ada sebagai tautan simbolik menuju /srv/releases/2026-09. Anda tidak perlu membuat atau mengubah direktori deployment untuk sekadar memahami contoh; ganti dengan tautan yang aman di lingkungan latihan Anda.
cd -L /srv/current && pwd -L
Jika perpindahan berhasil dan shell mempertahankan jalur logis, hasilnya:
/srv/current
Melihat jalur fisik dengan -P
pwd -P
Dengan asumsi target tautan seperti di atas dan komponen lainnya bukan tautan, hasilnya:
/srv/releases/2026-09
Opsi -P membantu memastikan direktori yang dipakai setelah melewati tautan deployment. Hasil tersebut tetap merupakan jalur dalam lingkungan proses saat ini, bukan pengenal file yang dijamin unik di semua mount atau container.
pwd bawaan shell dan program eksternal
Bash menyediakan pwd sebagai perintah bawaan atau builtin. Sistem juga dapat memasang program eksternal dari GNU Coreutils. Untuk memeriksa resolusi perintah pada Bash, jalankan:
type -a pwd
command -V pwd
Contoh keluaran type -a berikut menunjukkan kedua bentuk. Jalur dan jumlah baris pada sistem Anda dapat berbeda.
pwd is a shell builtin
pwd is /usr/bin/pwd
Mengapa memakai builtin?
Shell mengelola direktori kerjanya ketika menjalankan cd, sehingga builtin dapat memakai informasi itu tanpa menjalankan program eksternal. Bash biasanya memakai jalur logis; opsi shell set -P dapat mengubah default menjadi fisik. Tentukan pwd -L atau pwd -P jika perilaku tersebut penting.
Program GNU Coreutils eksternal memakai -P secara default, kecuali variabel POSIXLY_CORRECT disetel. Untuk GNU -L, nilai lingkungan PWD harus merupakan jalur absolut yang benar-benar menunjuk direktori kerja tanpa komponen . atau ..; jika tidak valid, GNU kembali memakai jalur fisik.
Menjalankan program eksternal secara eksplisit
Jika type -a menunjukkan program di /usr/bin/pwd, Anda dapat memanggilnya langsung:
/usr/bin/pwd
/usr/bin/pwd -P
Lokasinya tidak seragam pada semua sistem. GNU juga menyarankan pemanggilan melalui env pwd -P untuk menghindari builtin atau fungsi shell, dengan asumsi env eksternal dan PATH yang sesuai. Menambahkan command saja tidak memaksa penggunaan program eksternal ketika builtin masih tersedia.
Variabel PWD dan OLDPWD
Nama variabel berikut memakai huruf besar dan berbeda dari nama perintah pwd.
| Nama | Arti |
|---|---|
pwd |
Perintah untuk menampilkan direktori kerja saat ini. |
PWD |
Variabel lokasi saat ini yang dikelola shell; biasanya mempertahankan jalur logis. |
OLDPWD |
Direktori kerja sebelumnya setelah perpindahan; digunakan oleh cd - dan dapat belum tersedia pada sesi baru. |
printf '%s\n' "$PWD"
printf '%s\n' "$OLDPWD"
pwd -L
pwd -P
Mengubah PWD secara manual tidak memindahkan proses ke direktori lain. Nilai variabel dapat tidak sesuai dengan keadaan sebenarnya; periksa pwd -P jika Anda memerlukan jalur fisik. Dalam skrip dengan set -u, gunakan "${OLDPWD-}" jika variabel itu mungkin belum disetel.
Memakai pwd dalam skrip shell
Memeriksa lokasi eksekusi
Simpan contoh lengkap ini sebagai show-cwd.sh lalu jalankan sh show-cwd.sh dari direktori yang ingin diperiksa. Skrip memakai shell POSIX, menampilkan lokasi fisik, dan keluar dengan status 1 jika pwd gagal.
#!/bin/sh
current_dir=$(pwd -P) || exit 1
printf 'Direktori kerja saat ini: %s\n' "$current_dir"
Kutip variabel agar spasi di dalam jalur tetap diperlakukan sebagai bagian dari satu argumen. Substitusi perintah $(...) menghapus baris baru di akhir keluaran; cara ini sesuai untuk jalur biasa, tetapi tidak menyimpan nama direktori yang berakhir dengan baris baru secara utuh. Jika hanya perlu menampilkan lokasinya, panggil pwd -P langsung.
Membedakan direktori kerja dari lokasi skrip
pwd menunjukkan direktori kerja proses yang menjalankan skrip. Untuk melihat perbedaannya tanpa memakai skrip cadangan yang belum diketahui isinya, simpan contoh berikut sebagai demo-pwd.sh di direktori latihan yang dapat ditulis, lalu jalankan sh demo-pwd.sh. Utilitas mktemp dan mkdir diperlukan.
#!/bin/sh
demo_dir=$(mktemp -d ./pwd-demo.XXXXXX) || exit 1
demo_dir=$(cd "$demo_dir" && pwd -P) || exit 1
mkdir "$demo_dir/tools" "$demo_dir/run" || exit 1
printf '%s\n' '#!/bin/sh' 'pwd -P' > "$demo_dir/tools/show-cwd.sh" || exit 1
(
cd "$demo_dir/run" || exit 1
sh "$demo_dir/tools/show-cwd.sh"
)
Hasilnya berakhir dengan /pwd-demo.XXXXXX/run, dengan enam karakter acak menggantikan XXXXXX. Skrip berada di subdirektori tools, tetapi dijalankan dengan direktori kerja run. File latihan tetap berada dalam direktori pwd-demo.* yang baru dibuat; setelah memeriksanya, hapus hanya direktori latihan yang tepat bila tidak diperlukan lagi.
Pada contoh deployment yang sudah tersedia, prinsip yang sama berlaku: menjalankan /opt/tools/backup.sh dari /tmp membuat direktori awal prosesnya /tmp, selama skrip tidak berpindah direktori lagi. Menentukan lokasi skrip sendiri memerlukan pertimbangan lain, termasuk shell, tautan simbolik, dan cara pemanggilan.
Perbandingan dengan perintah terkait
| Perintah | Kegunaan |
|---|---|
pwd |
Menampilkan direktori kerja proses saat ini. |
cd |
Mengubah direktori kerja shell saat ini. |
realpath |
Menormalkan jalur yang diberikan menjadi jalur absolut; aturan tautan dan keberadaan komponen bergantung pada opsi. |
dirname |
Mengolah teks jalur dengan membuang komponen terakhir, tanpa menentukan direktori kerja proses. |
readlink |
Menampilkan teks target yang tersimpan dalam tautan simbolik. |
Masalah yang sering ditemui
Direktori kerja dihapus atau tidak dapat diakses
Jika proses lain menghapus direktori atau mengubah izin pada jalur induknya, perintah mungkin gagal menentukan nama direktori. Sebagian shell masih dapat menampilkan nama logis yang disimpan meskipun kondisi sistem file sudah berubah. Periksa status kegagalan dan pindahlah dengan cd ke direktori yang diketahui masih ada serta dapat diakses.
Hasil berbeda dari jalur yang diketik
Setelah melewati tautan simbolik, bandingkan pwd -L dan pwd -P. Nama logis dan jalur fisik dapat berbeda tanpa berarti salah satunya keliru. Periksa juga apakah yang dijalankan adalah builtin atau program eksternal.
Lokasi berbeda saat dijalankan otomatis
Cron, systemd, pekerjaan CI (continuous integration), dan container dapat memulai program dari direktori yang berbeda dari terminal interaktif. Sebelum memakai jalur relatif, catat lokasi melalui pwd, tentukan direktori kerja dalam konfigurasi peluncur, atau gunakan jalur absolut yang jelas. Status keluar pwd adalah 0 jika berhasil dan bukan nol jika gagal.
FAQ
Apa kepanjangan pwd?
Print working directory, yaitu menampilkan jalur direktori kerja saat ini.
Apakah pwd sama dengan echo "$PWD"?
Keluaran jalur logisnya dapat serupa, tetapi PWD adalah variabel yang dapat berubah atau tidak valid. pwd menjalankan aturan implementasinya, dan pwd -P menyelesaikan tautan untuk memperoleh jalur fisik.
Kapan memakai pwd -L atau pwd -P?
Gunakan -L untuk mempertahankan nama jalur logis yang dipakai saat berpindah, dan -P jika memerlukan jalur setelah tautan simbolik diselesaikan. Menentukan opsi secara eksplisit menghindari ketergantungan pada default implementasi.
Apakah pwd menunjukkan lokasi penyimpanan skrip?
Tidak. Perintah ini menunjukkan direktori kerja proses skrip, yang dapat berbeda dari direktori tempat file skrip disimpan.
Dokumentasi resmi
Untuk cara berpindah direktori, lihat panduan perintah cd Bash. Konteks perintah lain tersedia dalam referensi perintah Linux menurut tugas (bahasa Inggris).




