Назад | Перейти на главную страницу

Почему мой сценарий .bashrc выполняется не по порядку / не дожидается завершения шагов?

Мне нужно, чтобы учителя заполняли электронные регистры в отдаленных районах, и они должны уметь делать это быстро и с наименьшими усилиями. Для этого я установил нетбуки с «ванильной» установкой Debian 6, на которой не было ничего, кроме rdesktop. Нетбук автоматически входит в систему (через / etc / inittab), а затем я использую .profile файлы .bashrc в домашнем каталоге пользователя, чтобы перезапустить сеть (чтобы исправить ошибку dhcp), запустить startx для оконного сервера, а затем запустить rdesktop в терминальный сервер взять реестр. Это работает безупречно, и учитель получает свой реестр менее чем за 30 секунд.

Я бы хотел, чтобы при закрытии rdesktop (выходе из терминального сервера) ноутбук выключился, но пока не удалось. Изначально я пытался просто добавить команду выключения в следующую строку скрипта, но по какой-то необъяснимой причине скрипт, похоже, вышел из строя, и машина выключается до запуска rdesktop. Я думаю, это потому, что rdesktop «разветвляется». Есть ли способ дождаться завершения работы rdesktop до того, как остальная часть скрипта запустится?

Я уже пробовал: спать перед выключением ждать перед выключением

Я знаю, как я могу сделать это в файле visual basic / vbscript / batch, но я новичок в Linux и начинаю думать, что упускаю очевидное или веду себя глупо!

Мои файлы следующие:

/home/user/.profile:
sudo dhclient
startx -- :1

/home/user/.bashrc:
rdesktop -u "" -k en-gb -f servername

(Отсутствие имени пользователя является преднамеренным, поскольку из-за этого терминальный сервер не заполняет имя пользователя для входа в систему с помощью имени пользователя нетбука в Linux)

На самом деле может происходить то, что .bashrc выполняется больше, чем вы думаете.

Если он запущен и нет X-экрана или переменной DISPLAY, rdesktop завершится ошибкой, и затем будет выполнено завершение работы. Исправление @dimmer должно справиться с этим, хотя есть более чистый способ.

Он должен работать, если вы поместите команду выключения после startx команду и поставить rdesktop команда в пользователе .xinitrc. Это может быть немного чище и надежнее. Попробуйте сами.

Вы пробовали это:

/home/user/.bashrc

rdesktop -u "" -k en-gb -f servername && sudo shutdown -h now