Saya sedang bekerja di terminal saya, ketika saya salah mengeja saat cd
untuk melakukan root (/
). Secara tidak sengaja, saya mengetik //
dan saya masuk terminal:
[email protected]://#
Saat saya mengetik pwd
, saya mendapat respons //
tetapi ketika saya mengetik ls -s
saya mendapat daftar yang sama seperti di /
direktori.
Ketika Anda mengetik lebih dari 2, yaitu ///
Anda mendapatkan:
[email protected]:/#
Selalu 1 /
kecuali 2. Apakah ada perbedaan dan apa itu //
untuk?
Jawaban Terbaik
/
setara dengan //
Dari spesifikasi POSIX (penekanan ditambahkan):
3.267 Nama Jalur
String yang digunakan untuk mengidentifikasi file. Dalam konteks
POSIX.1-2008, nama jalur mungkin dibatasi hingga {PATH_MAX} byte, termasuk
byte null yang mengakhiri. Ini memiliki awal opsional<slash>
karakter, diikuti oleh nol atau lebih nama file yang dipisahkan oleh<slash>
karakter. Sebuah pathname secara opsional dapat berisi satu atau lebih<slash>
. tambahan karakter. Beberapa<slash>
. yang berurutan karakter
dianggap sama dengan satu<slash>
, kecuali untuk kasus
tepat dua<slash>
. di depan karakter.
Dan:
4.12 Resolusi Pathname
…
Nama path yang terdiri dari satu<slash>
akan menyelesaikan ke direktori root
proses. Nama path nol tidak akan berhasil
diselesaikan. Jika nama jalur dimulai dengan dua<slash>
yang berurutan karakter,
komponen pertama setelah<slash>
. utama karakter dapat
ditafsirkan dengan cara yang ditentukan implementasi, meskipun lebih dari
dua<slash>
utama karakter akan diperlakukan sebagai satu<slash>
karakter.
Untuk diskusi yang bagus tentang pengecualian (cygwin dan direktori) lihat:Bagaimana cara linux menangani beberapa pemisah jalur berurutan (/home////username///file)?