GNU/Linux >> Belajar Linux >  >> Linux

Unix, Perbedaan Antara Jalur Dimulai Dengan '/' Dan '//'?

Pertanyaan ini sudah memiliki jawaban di sini :Bagaimana Linux menangani beberapa pemisah jalur berurutan (/home////nama pengguna///file)?

(6 jawaban)
Tutup 3 tahun lalu.

Di unix/linux, sejumlah garis miring ke depan yang berurutan di suatu jalur umumnya setara dengan garis miring ke depan tunggal. mis.

$ cd /home/shum
$ pwd
/home/shum
$ cd /home//shum
$ pwd
/home/shum
$ cd /home///shum
$ pwd
/home/shum

Namun untuk beberapa alasan, dua garis miring ke depan di awal jalur absolut diperlakukan secara khusus. mis.

$ cd ////home
$ pwd
/home
$ cd ///
$ pwd
/
$ cd //
$ pwd
//
$ cd home//shum
$ pwd
//home/shum

Jumlah garis miring ke depan lainnya yang berurutan di tempat lain dalam patch akan terpotong, tetapi dua di awal akan tetap ada, bahkan jika Anda kemudian menavigasi di sekitar sistem file relatif terhadapnya.

Kenapa ini? Apakah ada perbedaan antara /… dan //… ?

Jawaban yang Diterima:

Untuk sebagian besar, garis miring berulang di jalur setara dengan garis miring tunggal. Perilaku ini diamanatkan oleh POSIX dan sebagian besar aplikasi mengikutinya. Pengecualiannya adalah bahwa "nama path yang dimulai dengan dua garis miring berturut-turut dapat ditafsirkan dengan cara yang ditentukan implementasi" (tetapi ///foo setara dengan /foo ).

Kebanyakan unice tidak melakukan sesuatu yang istimewa dengan dua garis miring awal. Linux, khususnya, tidak. Cygwin melakukan://hostname/path mengakses drive jaringan (SMB).

Apa yang Anda lihat sebenarnya bukanlah Linux yang melakukan sesuatu yang istimewa dengan // :ini adalah pelacakan direktori bash saat ini. Bandingkan:

$ bash -c 'cd //; pwd'
//
$ bash -c 'cd //; /bin/pwd'
/

Bash mengambil tindakan pencegahan bahwa OS mungkin memperlakukan // khusus dan menjaganya. Dash melakukan hal yang sama. Ksh dan zsh tidak ketika dijalankan di Linux, saya rasa (saya belum memeriksanya) mereka memiliki pengaturan waktu kompilasi.


Linux
  1. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  2. Perbedaan Antara 2>&-, 2>/dev/null, |&, &>/dev/null Dan>/dev/null 2>&1?

  3. Apa Perbedaan Antara /sbin/nologin Dan /bin/false?

  1. Perbedaan Antara /opt Dan /usr/local?

  2. Perbedaan Antara '$ . Foo' Dan '$ ./foo'??

  3. Perbedaan antara jalur absolut dan relatif di Linux

  1. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  2. Apa perbedaan antara #!/usr/bin/env bash dan #!/usr/bin/bash?

  3. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?