如果当前 bash 脚本尚未启动,则打开一个终端

如果当前 bash 脚本尚未启动,则打开一个终端

如果脚本没有在终端窗口中启动,如何让它在终端窗口中重新启动?

基于这个问题,我已经尝试过,在一个名为标记为可执行的文件中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

您可以尝试以下方法:

  1. 创建一个特殊的bash.rc 文件,用于获取bashrc并运行你的脚本。我们称之为~/foo.rc

    $ cat ~/foo.rc
    #!/bin/sh
    ~/Desktop/testterm
    
  2. 创建一个新的“shell”,以 为 .rc 文件进行调用bash~/foo.rc将此脚本保存fake_shell在您的某个位置$PATH(例如~/config/bin)并使其可执行:

  3. 现在,在您的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

相关内容