GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan Aneh Antara Pwd Dan /bin/pwd?

Saya menambahkan symlink ke direktori saat ini dengan ln -s . aa . Jika saya menjalankan cd aa , dan setelah itu saya mengeksekusi pwd , jawabannya adalah /home/sim/aa .

Tetapi jika saya menjalankan /bin/pwd itu mencetak /home/sim (direktori saat ini tidak berubah).

Dari mana perbedaan ini berasal?

Jawaban yang Diterima:

Di sebagian besar shell termasuk bash, pwd adalah shell bawaan:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

Jika Anda menggunakan /bin/pwd , Anda harus menggunakan -L opsi untuk mendapatkan hasil yang sama dengan pwd bawaan :

$ ln -s . test
$ cd test && pwd
/home/cuonglm/test
$ /bin/pwd
/home/cuonglm
$ /bin/pwd -L
/home/cuonglm/test

Secara default, /bin/pwd mengabaikan symlink dan mencetak direktori sebenarnya.

Dari info pwd :

`-L'
`--logical'
     If the contents of the environment variable `PWD' provide an
     absolute name of the current directory with no `.' or `..'
     components, but possibly with symbolic links, then output those
     contents.  Otherwise, fall back to default `-P' handling.

`-P'
`--physical'
     Print a fully resolved name for the current directory.  That is,
     all components of the printed name will be actual directory
     names--none will be symbolic links.

pwd . bawaan menyertakan symlink secara default, kecuali -P opsi digunakan, atau -o physical set builtin diaktifkan.

Dari man bash :

pwd [-LP]
              Print the absolute pathname of the  current  working  directory.
              The pathname printed contains no symbolic links if the -P option
              is supplied or the -o physical option to the set builtin command
              is  enabled.  If the -L option is used, the pathname printed may
              contain symbolic links.  The return status is 0 unless an  error
              occurs  while  reading  the  name of the current directory or an
              invalid option is supplied.

Linux
  1. Perbedaan antara /bin/false &/sbin/nologin

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

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

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

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

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

  1. Mengapa /bin/sh Menunjuk Ke /bin/dash Dan Bukan /bin/bash??

  2. Apa perbedaan antara /bin/false dan /sbin/nologin sebagai shell pengguna nologin?

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