Попробуйте что-нибудь из этого:
$ cat tst.sh
#!/bin/env bash
assPath='/foo:/bar/whatever:/somewhere/else'
assFind() {
local tgt="$1" dir assArr
IFS=':' read -r -a assArr <<< "$assPath"
for dir in "${assArr[@]}"; do
printf 'Searching "%s"\n' "$dir" >&2
if [[ -e "${dir}/${tgt}" ]]; then
printf '%s/%s\n' "$dir" "$tgt"
return 0
fi
done
return 1
}
assFind 'ding.ogg'
$./tst.sh
Searching "/foo"
Searching "/bar/whatever"
Searching "/somewhere/else"
Очевидно, что в моей системе нет ни этих каталогов, ни этого файла, поэтому при запуске не было стандартного вывода.
Размещение скрипта в домашних каталогах пользователей не помогает, вам все равно нужно каким-то образом его запустить.
Поместите сценарий (или ссылку на него )в какой-нибудь подходящий каталог, а затем запустите инструмент в одном из глобальных файлов запуска оболочки, если пользователь входит в данную группу. Для запуска при входе в систему вы можете использовать /etc/profile
или файл в /etc/profile.d/
на большинстве систем. Затем вы можете проверить членство в группе примерно так:
if id | grep -qwF specialgroup; then
/path/to/specialtool
fi
id
в Linux выводит что-то вроде ...groups=1000(blah),4(adm),20(dialout),24(cdrom),25(floppy)...
, а grep -w
ищет полные совпадения -слов. Это должно работать до тех пор, пока имена ваших групп содержат только «словесные символы» в смысле языка программирования, то есть a-zA-Z0-9_
. Если они этого не сделают, что ж, вам придется сделать что-то другое.
Вместо id
вы можете использовать groups
или что-то другое, что есть в вашей системе, если это не система GNU/Linux.
(Конечно, вы также можете поместить скрипт куда-нибудь в PATH
, чтобы вам не нужно было включать полный путь в скрипт входа в систему.)
(не могу комментировать, недостаточно реп...)
Из обмена комментариями я бы сказал, что вам нужно установить свой скрипт как принадлежащий этой группе пользователей (и соответствующим образом обновить разрешения ugo ), а затем добавить строку в их.bashrc (или любой эквивалентный файл на основе ОС )для запуска указанного скрипта.
Кстати, это отличный инструмент.