有一个.desktop编译脚本,在终止后需要保持打开状态,以防我需要纠正错误.在Windows中,我将运行cmd / k script.bat,并且/ k将在终止后保持cmd窗口打开.
在Linux中,我的解决方案是创建一个bash脚本,它由“compile”命令和最后的“bash”命令组成. .desktop文件调用脚本,由于bash命令,该脚本在完成后依次保持打开状态.
有没有办法用一个文件做到这一点?如果是这样,我需要使用单个命令执行以下任一操作,例如:通过bash的命令行参数:
>让bash在启动之前运行命令(相当于Windows中的cmd / k命令)
>在某个目录中启动bash(我可以配置编译在其目录打开时触发)
>在执行命令后使.desktop文件保持打开状态(这是最不可取的,因为我需要打开第二个窗口来纠正错误,如果有的话)
如果其中一个是可能的,请告诉我.
解决方法:
我找到了一个方法.我从一些stackexchange站点获得它但无法找回它.
无论如何:你可以滥用bash的–init-file选项.它旨在覆盖使用其他一些启动脚本而不是.bashrc,但你可以在那里放任何东西.结合匿名管道,您可以执行以下操作:
bash --init-file <(echo "your --command --here")
命令结束后,你将被重新放入bash中 – 不是像其他解决方案一样的新bash实例,而是同一个实例.
现在,这会跳过.bashrc当然因为那是–init-file的用途.要解决这个问题,你会非常漂亮
bash --init-file <(echo ". \"$HOME/.bashrc\"; your --command --here")
丑陋,但它的工作原理:-)
在适用于Linux的Windows子系统上
最后,我尝试从Windows执行此操作,但遇到麻烦,因为当您启动bash调用Windows的Linux子系统时,您仍然在Windows中,因此匿名管道将无法工作,$HOME完全错误,依此类推.我的解决方法“cmd / k,但启动windows子系统的Linux”已成为:
bash -c 'exec bash --init-file ^<(echo ". \"$HOME/.bashrc\"; your --command --here")'
注意^要转义<字符.这将启动bash(bash -c),立即用新的(exec)替换当前的bash进程,这也是一个bash进程,现在如前所述,在Linux领域内初始化. 我在PATH中创建了一个名为bash-k.cmd的批处理文件,所以我可以轻松调用它,里面有这个:
@bash -c 'exec bash --init-file ^<(echo ". \"$HOME/.bashrc\"; %*")'
它允许我做bash-k cowsay你好,事情会有效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。