[
] Это похоже на пару других ответов, но более переносимый, чем [] этот []. и гораздо проще, чем [] эта []: [
] [
sh -c 'stat "$0"; file "$0"' filename
] [
] или [
] [
sh -c 'stat "$1"; file "$1"' sh filename
] [
], в которой []sh [
] присваивается []$0 [
].
Хотя для ввода требуется еще три символа,
эта (вторая) форма предпочтительнее
потому что [] $0[
] - это имя, которое вы даете этому встроенному сценарию.
Оно используется, например, в сообщениях об ошибках оболочкой для этого скрипта,
например, когда файл []file[
] или []stat[
] не может быть найден или не может быть выполнен.
по любой причине. [
] [
] [
] Если вы хотите сделать [
] [
stat filename1 filename2 filename3 …; file filename1 filename2 filename3 …
] [
] для произвольного количества файлов, сделайте [
] [
sh -c 'stat "$@"; file "$@"' sh filename1 filename2 filename3 …
] [
], что работает, потому что [] "$@" [
] эквивалентно [] "$1" "$2" "$3" ...[
].[
].
Прочитайте Руководство LD.SO (динамический линкер / погрузчик). Фактические пути поиска в основном определяются /etc/ld.so.cache
(который скомпилирован из /etc/ld.so.conf
ldconfig
)) или встроенные пути в вашем двоичном LD.SO. Поэтому проверьте настройки платформы и как вы построили свой GLIBC.
Вы можете посмотреть подробную деятельность LD.SO, запустив любой двоичный с помощью ld_debug = libs
, установленные в переменной среды.
$ LD_DEBUG=libs ls
17441: find library=libselinux.so.1 [0]; searching
17441: search cache=/etc/ld.so.cache
17441: trying file=/lib/x86_64-linux-gnu/libselinux.so.1
17441:
17441: find library=libacl.so.1 [0]; searching
17441: search cache=/etc/ld.so.cache
17441: trying file=/lib/x86_64-linux-gnu/libacl.so.1
17441:
17441: find library=libc.so.6 [0]; searching
17441: search cache=/etc/ld.so.cache
17441: trying file=/lib/x86_64-linux-gnu/libc.so.6
...
Как быстрое исправление, добавьте , добавьте
в переменную среды оболочки ld_library_path
через .bashrc,
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib
, а затем,
source /home/user/.bashrc