Если вы хотите увидеть:(последнюю часть вашего текущего каталога ), за которой следует знак решетки, вы должны использовать:
PS1='\W# '
Поместите эту строку в файл .bashrc
в вашем домашнем каталоге.
Хотя я бы предостерег вас от использования #
в командной строке, отличной от -, так как принято использовать что-то вроде >
или $
в строках приглашения, отличной от -, и #
в корневой подсказке. быстрый.
Ссылка:Запрос оболочки Bash
how do I trace the original file or every hardlink using /usr/bin/bash file as reference
С помощью GNU найдите (или любую другую версию find
, которая имеет параметр -samefile
), и если предположить, что /usr/bin/bash
находится в файловой системе /
, это правильно:
find / -xdev -samefile /bin/bash
Используйте -xdev
, так как жесткие ссылки не могут пересекать границы файловой системы. Не перенаправлять ошибки :, если у вас нет разрешения на просмотр каталога, в этом каталоге может присутствовать жесткая ссылка, и вы ее пропустите.
Ошибка, которую вы совершаете, заключается в том, что вы ищете другую жесткую ссылку, которой не существует. На самом деле у вас есть информация, чтобы знать, что его не существует:
1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /bin/bash*
^
Количество жестких ссылок /bin/bash
равно 1.
В /
есть один файл, который совпадает с /usr/bin/bash
. Файл /bin/bash
совпадает с /usr/bin/bash
по другой причине :каталоги /bin
и /usr/bin
являются одним и тем же файлом. Поскольку find / -samefile /bin/bash
указывает на /usr/bin/bash
, /bin
имеет символическую ссылку на /usr/bin
. Точнее, из информации в вопросе и предполагая, что /bin
не является жесткой ссылкой на каталог (плохо поддерживаемой, редко используемой функцией ), мы знаем, что /bin
— это символическая ссылка, которая разрешается в /usr/bin
; это может быть символическая ссылка на другую символическую ссылку и т. д., в конечном итоге приводящая к /usr/bin
или к некоторому эквивалентному пути, такому как ///////usr/bin/
,но, скорее всего, это символическая ссылка, целью которой является /usr/bin
.
Искать все символические ссылки на файл во всей системе не особенно продуктивно. Например, в Linux есть файл /proc/*/exe
, который является символической ссылкой на/usr/bin/bash
(или/bin/bash
)для каждого процесса, выполняющего bash. И если вы ищете символические ссылки на каталог, вы окажетесь внутри бесконечной рекурсии, например, с /proc/*/root
, указывающим на /
(, за исключением процессов с chroot ).
Если вам нужно узнать, указывают ли два пути на один и тот же файл, в Linux вы можете использовать любой из
[ /bin/bash -ef /usr/bin/bash ]
test /bin/bash -ef /usr/bin/bash
(-ef
не POSIX, но он есть в dash, bash, BusyBox и GNU coreutils ). Если вам нужно получить канонический путь к файлу в том смысле, что разные файлы всегда имеют разные канонические имена, вы можете использовать
readlink -f /bin/bash
(Это может привести к пропуску файлов, которые совпадают через смонтированные каталоги, например, если одно и то же сетевое расположение смонтировано двумя разными способами.)