Has*_*own 4 bash automation konsole interactive
我希望能够获得一个脚本(在启动时运行)来打开konsole
终端。
当它打开时,它会做一些持久的事情(比如更改目录和源 bashrc)并运行一个长时间运行的程序。
如果程序崩溃或我进来了<ctrl+c>
,它会开始接受来自标准输入的命令(例如“向上输入”以再次尝试,就好像它一直是交互式的一样)。
我已经尝试了很多方法来让它工作(我目前只是试图让它ls
并在完成时恢复到交互式);
konsole -e ls
konsole --hold ls
konsole -e /bin/bash -c ls
konsole --hold -e "/bin/bash -c ls"
konsole -e "/bin/bash -i -c ls"
konsole -e /bin/bash -i -c ls
konsole -e "echo ls > /tmp/konsolebash;/bin/bash -i --rcfile /tmp/konsolebash"
echo ls > /tmp/konsolebash
konsole -e "/bin/bash -i --rcfile /tmp/konsolebash"
Run Code Online (Sandbox Code Playgroud)
跟引号有关吗?我不应该使用它们,我应该逃避什么吗?
我什至打算尝试执行bash
吗?
我的想法用完了,但我希望它甚至可以实现(但希望不是我错过的令人尴尬的简单)。
如果konsole
特别是问题,我会赞成成功使用其他终端模拟器的答案(但由于问题具体是关于konsole
我认为我不能给你多汁的勾号)
感谢@n.st 的评论,我制作了这个班轮:
konsole -e /bin/bash --rcfile <(echo "cd /;ls;echo hi | less")
Run Code Online (Sandbox Code Playgroud)
这只是一个没有 tmpfiles 的较短版本,使用 bash 进程替换以下内容;
echo "cd /;ls;echo hi | less" > /tmp/konsolebash;konsole -e /bin/bash --rcfile /tmp/konsolebash
Run Code Online (Sandbox Code Playgroud)
它将运行一些命令,让它们显示,改变环境,运行一个长时间运行的程序 ( less
) 并且当它结束时 ( :q
) 将是交互式的。
所以cd /;ls;echo hi | less
用你的脚本替换(演示)。
没有历史记录,但至少您现在位于正确的目录中,并且拥有您可能想要设置的任何环境变量。
与我之前的尝试基本相同;
konsole -e "echo ls > /tmp/konsolebash;/bin/bash -i --rcfile /tmp/konsolebash"
Run Code Online (Sandbox Code Playgroud)
除了文件写入在konsole
执行之外,我已经删除了-i
标志并且执行参数不在一个引号中
不幸的是,--rcfile
开关会导致您~/.bashrc
没有为这些命令加载,所以如果您需要别名或其他东西,您必须这样做;
cat ~/.bashrc > /tmp/konsolebash; echo "commands" >> /tmp/konsolebash;konsole -e /bin/bash --rcfile /tmp/konsolebash
Run Code Online (Sandbox Code Playgroud)
它只是复制您的 bashrc 然后将您的命令附加到它的末尾
归档时间: |
|
查看次数: |
9117 次 |
最近记录: |