如果脚本没有在终端窗口中启动,如何让它在终端窗口中重新启动?
基于这个问题,我已经尝试过,在一个名为标记为可执行的文件中testterm
:
#! /bin/sh
if [ -t 0 ]; # stdin
then
echo "yay! terminal!"
else
Terminal sh ~/Desktop/testterm
fi
...但 HaikuTerminal
只是打开却不显示任何东西,或者有时打开后立即消失。
如果我在终端上输入,Terminal sh ~/Desktop/testterm
它会工作一次,打开一个带有“yay!terminal!”的终端,但随后的尝试会产生空的终端。
答案1
您可以尝试以下方法:
创建一个特殊的
bash
.rc 文件,用于获取bashrc
并运行你的脚本。我们称之为~/foo.rc
$ cat ~/foo.rc #!/bin/sh ~/Desktop/testterm
创建一个新的“shell”,以 为 .rc 文件进行调用
bash
。~/foo.rc
将此脚本保存fake_shell
在您的某个位置$PATH
(例如~/config/bin
)并使其可执行:- 现在,在您的
testterm
脚本中,Terminal
使用fake_shell
作为 shell 启动。
脚本变为:
#!/bin/sh
if [ ! -t 0 ]; # stdin
then
TIMESTAMP=`date +%Y%m%d%H%M`
echo "#!/bin/sh
source /boot/common/etc/profile
$0" > ~/temp_term$TIMESTAMP.rc
echo "#!/bin/sh
bash --rcfile ~/temp_term$TIMESTAMP.rc" > ~/config/bin/temp_shell$TIMESTAMP
chmod a+x ~/config/bin/temp_shell$TIMESTAMP
Terminal temp_shell$TIMESTAMP
rm -f ~/config/bin/temp_shell$TIMESTAMP
rm -f ~/temp_term$TIMESTAMP.rc
fi
echo "yay! terminal!"
# your script here
exit