2

Как получить скрипт для повторного запуска в окне терминала, если он не был запущен в одном из них?

Основываясь на этом вопросе, я попытался в файле с именем testterm отметить исполняемый файл:

#! /bin/sh
if [ -t 0 ];  # stdin
then
    echo "yay! terminal!"
else
    Terminal sh ~/Desktop/testterm
fi

... но Terminal Хайку просто открывается и никогда ничего не показывает, или иногда открывается и уходит немедленно.

Из Терминала, если я Terminal sh ~/Desktop/testterm он работает один раз, открывая Терминал с "yay! Терминал!"в этом, но затем последующие попытки приводят к пустым терминалам.

1 ответ1

1

Взлом, который вы можете попробовать, заключается в следующем:

  1. Создайте специальный bash .rc файл, который будет источником вашего bashrc и запускает ваш скрипт. Давайте назовем это ~/foo.rc

    $ cat ~/foo.rc
    #!/bin/sh
    ~/Desktop/testterm
    
  2. Создайте новую "оболочку", которая вызывает bash с ~/foo.rc качестве файла .rc. Сохраните этот скрипт как fake_shell где-нибудь в вашем $PATH (например, ~/config/bin) и сделайте его исполняемым:

  3. Теперь в вашем сценарии testterm запустите Terminal используя в качестве оболочки fake_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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .