У меня есть скрипт bash, который создает нового пользователя и добавляет текущий $USER
во вновь созданную группу пользователей. Затем я хочу перезапустить сценарий, используя newgrp
, чтобы у оболочки были права на чтение / запись для файлов, принадлежащих новому пользователю.
Я ожидаю, что человек в терминале ответит на какой-нибудь ввод. Когда я перезапускаю скрипт, используя newgrp
, то read
больше не работает. Это полностью обойдено.
Ниже приведен пример, демонстрирующий то же поведение.
do_restart_script_with_updated_permissions () {
local cwd=$(pwd)
export SCRIPT_PATH="$cwd"
newgrp "newgroup" <<EONG
export NEW=true
cd $SCRIPT_PATH
./test.sh
EONG
}
if [ -z "$NEW" ]; then
echo "We will restart the script."
read
do_restart_script_with_updated_permissions
else
echo "Script restarted."
# this does nothing
read -p "get some input" user_input
echo "Done."
fi
Вот вывод сценария:
./test.sh
We will restart the script.
Script restarted.
Done.