Во-первых, у пользователей нет RealUID. У пользователей есть UID. Период. (Ситуация с GID немного сложнее.)
Процессы имеют реальные UID и эффективные UID (и другие ).
Во-вторых, выполнение файла никогда не изменит реальный UID или реальный GID процесса.
В-третьих, выполнение foo
не изменит никаких идентификаторов процесса, потому что в его режиме не установлен бит setUID или setGID.
А зачем вы удосужились оговорить файл bar
у которого установлен бит setGID в режиме, когда вы не задаете никаких вопросов об этом?
Проведите дополнительное исследование и отредактируйте свой вопрос , чтобы он был более последовательным.
Вы можете запускать файлы по отдельности на основе их полного пути:
$ /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
Чтобы запускать файлы таким образом, для файлов должен быть установлен бит выполнения.
Каталоги, перечисленные в переменной 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
).