Для упражнения - я удалил разрешение на выполнение для других из / bin / pwd:
$ chmod o-x /bin/pwd
$ ls -l /bin/pwd
-rwxr--r-- 1 root root 26568 Apr 28 2010 /bin/pwd
и, поскольку зарегистрировано как matt, я не могу выполнить / bin / pwd, как ожидалось:
$ /bin/pwd
$ -bash: /bin/pwd: Permission denied
но внезапно он может быть выполнен, если не абсолютный:
$ pwd
/home/matt
Зачем? Спасибо!
pwd
- это встроенная оболочка. Вы можете увидеть это с
$ type pwd
pwd is a shell builtin
pwd
встроен в большинство оболочек. Одна из причин этого заключается в том, что это очень простая команда, которая используется довольно часто (и запуск встроенной программы происходит быстрее, чем запуск внешнего процесса). Другая причина в том, что он позволяет оболочке отслеживать символические ссылки, так что cd /foo/bar; pwd
показывает /foo/bar
даже если bar
является символом /wibble
(в bash и многих других оболочках вы можете использовать pwd -P
показывать /foo/bar
и pwd -L
показывать /wibble
; по умолчанию контролируется -o physical
вариант).