Apa itu direktori "//"?

12

Di berbagai mesin linux Anda bisa

cd /

dan

cd //

Shell akan mengatakan direktori saat ini adalah '/' atau '//' setelah menggunakan perintah yang sesuai.

Jadi pertanyaannya adalah: Apa perbedaan antara '/' dan '//', dan jika jawabannya adalah 'tidak ada perbedaan' maka mengapa '//' ditampilkan secara berbeda dari '/'

BTW

cd ///
cd ////
cd /////

Semua hasil di shell mengatakan direktori saat ini adalah '/'

Inilah sesi contoh:

[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$
sylvanaar
sumber
2
Ini tampaknya anomali spesifik-bash. Jika Anda mencoba cd //dalam csh atau zsh dan kemudian pwditu akan menunjukkan hanya '/'
Doug Harris
menarik - yang menyoroti di atasnya
sylvanaar
1
Sebagai perbandingan: cd //usr/binberi "// usr / bin", tetapi cd /usr//binberi "/ usr / bin" (dalam Bash).
Dijeda sampai pemberitahuan lebih lanjut.

Jawaban:

14

Mari kita tanyakan pada pria itu sendiri (Chester Ramey):

E10) Mengapa 'cd //' meninggalkan $ PWD sebagai '//'?

POSIX.2, dalam uraiannya tentang 'cd', mengatakan bahwa tiga atau lebih garis miring terkemuka dapat diganti dengan garis miring tunggal ketika mengkanonik direktori kerja saat ini.

Saya kira ini adalah kompatibilitas historis. Versi Unix tertentu, dan sistem file jaringan awal, menggunakan jalur dari form // hostname / path untuk mengakses 'path' di server 'hostname'.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
Jawaban yang jauh lebih baik daripada yang (sudah cukup bagus) dari John T.
innaM
9

Ini bukan direktori aktual, ini masalah khusus dengan bash. Ini direferensikan dalam Proyek Dokumentasi Linux .

John T
sumber
4
mengapa tidak ada yang memperbaikinya? atau pernah?
sylvanaar