Откуда bash берет свой ПУТЬ, если запускается с параметром --norc? [дубликат]

На этот вопрос уже есть ответ здесь:

Пытаюсь узнать, где находится . Запись (текущий каталог) в ПУТЬ возникает, я запустил bash следующим образом:

$ env -i /bin/bash --norc -c 'echo $PATH'
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

Удивительно, но текущий каталог все еще указан там. Затем я попытался использовать strace , чтобы узнать, какие файлы читает bash, но не нашел ничего подходящего:

$ env -i strace -fefile /bin/bash --norc -c 'echo $PATH' |& grep -v ' ENOENT '
execve("/bin/bash", ["/bin/bash", "--norc", "-c", "echo $PATH"], 0x7fff02c40550 /* 0 vars */) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/dev/tty", O_RDWR|O_NONBLOCK) = 3
getcwd("/home/ruslan", 4096)            = 13
openat(AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
+++ exited with 0 +++

Итак, где bash берет это значение по умолчанию для PATH ?

0
задан 22 October 2018 в 03:57

1 ответ

Это трудно кодируется в исходном коде удара и не связано с любыми определенными для Ubuntu патчами. А именно, это расположено в config-top.h в корне исходного дерева удара:

/* The default value of the PATH variable. */
#ifndef DEFAULT_PATH_VALUE
#define DEFAULT_PATH_VALUE \
  "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:."
#endif
0
ответ дан 27 October 2019 в 07:20

Другие вопросы по тегам:

Похожие вопросы: