2 папки, добавленные в PATH, содержат разные файлы с одинаковыми именами

Во-первых, у пользователей нет RealUID. У пользователей есть UID. Период. (Ситуация с GID немного сложнее.)

Процессы имеют реальные UID и эффективные UID (и другие ).

Во-вторых, выполнение файла никогда не изменит реальный UID или реальный GID процесса.

В-третьих, выполнение fooне изменит никаких идентификаторов процесса, потому что в его режиме не установлен бит setUID или setGID.

А зачем вы удосужились оговорить файл barу которого установлен бит setGID в режиме, когда вы не задаете никаких вопросов об этом?

Проведите дополнительное исследование и отредактируйте свой вопрос , чтобы он был более последовательным.

0
12.02.2021, 12:19
2 ответа

Вы можете запускать файлы по отдельности на основе их полного пути:

$ /home/example/folder1/filewithname.sh
$ /home/example/folder2/filewithname.sh

Или вы можете перейти в каталог отдельных файлов и запустить файлы на основе их относительного пути. Например:

cd /home/example/folder1
~/example/folder1$./filewithname.sh

cd /home/example/folder2
~/example/folder2$./filewithname.sh

Чтобы запускать файлы таким образом, для файлов должен быть установлен бит выполнения.

1
18.03.2021, 22:30

Каталоги, перечисленные в переменной PATH, будут найдены в том порядке, в котором они перечислены . Когда заданная команда найдена, поиск завершается.

Это означает, что если вы добавили два каталога в том порядке, в котором вы показываете(folder1перед folder2), тогда будет использоваться команда из folder1, если вы просто скажете filewithname.shв командной строке. folder1вариант команды эффективно затеняет вариант в folder2.

Если вам нужен другой вариант команды, вам нужно будет получить к ней доступ, используя ее путь, то есть как /home/example/folder2/filewithname.sh, или через какой-либо эквивалентный путь.

Вы также можете создавать псевдонимы для каждой из команд, чтобы вам не приходилось думать о том, в каком порядке каталоги перечислены в $PATH. Например,

alias c1=/home/example/folder1/filewithname.sh
alias c2=/home/example/folder2/filewithname.sh

Это позволит вам использовать c1и c2для выполнения двух сценариев.

Вы можете поместить эти определения псевдонимов в файл инициализации вашей оболочки (, например. в ~/.bashrc, если вы используете bash, или в ${ZDOTDIR:-$HOME}/.zshrc, если вы используете zsh).

3
18.03.2021, 22:30

Теги

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