Я думаю, что лучше читать исходный код, чтобы выяснить, сохраняется ли переменная PATH OS через очистку окружающей среды - Трейси
Чтение исходного кода, конечно, дать всю информацию о дело. Но мы можем также получить ценные подсказки с помощью strace
:
>strace -eexecve env -i ls
execve("/usr/bin/env", ["env", "-i", "ls"], [/* 48 vars */]) = 0
execve("ls", ["ls"], [/* 0 vars */]) = -1 ENOENT (No such file or directory)
execve("/bin/ls", ["ls"], [/* 0 vars */]) = 0
Мы видим, что env
пытается исполняющие "ls"
без пути первой, которая выйдет из строя, а затем пытается выполнения "/bin/ls"
, который успешно. Мы также видим это начать с пустой среды[/* 0 vars */]
.
>strace -eexecve env -i foo
execve("/usr/bin/env", ["env", "-i", "foo"], [/* 48 vars */]) = 0
execve("foo", ["foo"], [/* 0 vars */]) = -1 ENOENT (No such file or directory)
execve("/bin/foo", ["foo"], [/* 0 vars */]) = -1 ENOENT (No such file or directory)
execve("/usr/bin/foo", ["foo"], [/* 0 vars */]) = -1 ENOENT (No such file or directory)
env: foo: No such file or directory
При указании несуществующей команды или команд проживающих в каком-то другом пути, мы видим, что env
наконец пробует /usr/bin/
пути, и это все. Итак, очевидно, /bin/
и /usr/bin/
жестко закодированы в env
, а с -i
среда команды действительно пуста. Другой тест:
>env -i strace ls
strace: ls: command not found
ls
Если должен быть выполнен не непосредственно env -i
, но косвенно через другую команду, он не найден.
В соответствии с вашим ответом 'env -i' должен очистить все эти пользовательские переменные, включая' PATH' varibale, чтобы оболочка не могла найти, где находится 'ls', но результат не соответствует моему thoughs. – Tracy
Включая * пользовательские дополнения * к переменной PATH. Базовая переменная ОС PATH (и я думаю, что все, что вы настроили в/etc/skel), сохраняется через очистку среды, поэтому такие вещи, как/bin,/usr/bin и/usr/local/bin, будут сохраняться. – ijustlovemath
Я думаю, что лучше прочитать исходный код, чтобы узнать, сохраняется ли переменная ОС PATH с помощью очистки среды – Tracy