为什么我的 .bashrc 脚本执行顺序混乱/没有等待步骤完成?

为什么我的 .bashrc 脚本执行顺序混乱/没有等待步骤完成?

我需要让偏远地区的教师填写电子登记册,他们需要能够快速完成,并且尽量减少麻烦。为了实现这一点,我安装了“原始”Debian 6 上网本,除了 rdesktop 之外没有其他任何内容。上网本自动登录(通过 /etc/inittab),然后我使用 .profile 用户主目录中的 .bashrc 文件重新启动网络(以修复 dhcp 错误),启动窗口服务器的 startx,然后启动 rdesktop 进入终端服务器进行登记。这工作得很完美,老师在不到 30 秒的时间内就收到了他们的登记册。

我希望的是,当他们关闭 rdesktop(退出终端服务器)时,笔记本电脑会关闭,但目前失败了。我最初尝试将关机命令添加到脚本的下一行,但由于某种无法解释的原因,脚本似乎运行顺序错误,机器在 rdesktop 运行之前就关闭了。我认为这是因为 rdesktop 正在“分叉”。有没有办法让我等到 rdesktop 退出后再运行其余脚本?

我已经尝试过:关机前睡眠,关机前等待

我知道如何在 Visual Basic / Vbscript / 批处理文件中执行此操作,但是我对 Linux 还很陌生,并且开始认为我忽略了显而易见的东西或很愚蠢!

我的文件如下:

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

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

(缺少用户名是故意的,因为这会导致终端服务器不使用上网本的 Linux 用户名预先填充登录用户名)

答案1

实际情况可能是,.bashrc运行的次数比你想象的要多。

如果运行时没有 X 屏幕或 DISPLAY 变量,rdesktop 将失败,然后关机将运行。@dimmer 的修复应该可以解决这个问题,尽管还有一种更干净的方法。

如果您将关机命令放在startx命令之后,并将rdesktop命令放在用户的 中,它应该可以工作.xinitrc。这可能更简洁,更强大。试试看。

答案2

您是否尝试过这个:

/home/用户/.bashrc

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

相关内容