Как остановить приостановку скрипта zsh (вывод tty) - PullRequest
5 голосов
/ 22 июня 2011

У меня есть скрипт zsh, который я хочу запустить так, чтобы он также загружал мой файл .zshrc.Я считаю, что мне нужно запустить мой сценарий в интерактивном режиме?

Таким образом, мой сценарий начинается следующим образом:

#!/bin/zsh -i

if [ $# = 0 ]
then
    echo "need command line paramter..."
    exit
fi

Однако, когда я пытаюсь запустить этот сценарий в фоновом режиме, он становитсяприостановлено (даже если я передам правильное количество параметров):

[1]  + suspended (tty output) 

Мой вопрос: как мне создать скрипт, который может работать в фоновом режиме, который также загружает мой загрузочный файл .zshrc?Если мне нужно перевести его в интерактивный режим, как я могу избежать проблемы приостановки вывода tty?

Спасибо

1 Ответ

6 голосов
/ 22 июня 2011

Не используйте интерактивный режим как хэш-бэнг!

Вместо этого, если вы хотите, введите свой файл zshrc в скрипт:

#!/bin/zsh
source ~/.zshrc
...

Для дальнейшего использования вы можете использовать bultin disown, чтобы отсоединить ранее заданное задание от оболочки, чтобы его нельзя было приостановить или что-либо еще. Родительская оболочка может быть закрыта без влияния на процесс:

$ disown %1

Вы можете сделать это прямо из командной строки при запуске программы, используя оператор &! вместо &:

$ ./my_command &!
...