exo-open в терминальном скрипте - программа закрывается вместе с терминалом

Я написал простой сценарий bash, который запрашивает путь к файлу или каталогу и открывает его с помощью exo-open. Затем я назначил этот сценарий сочетанию клавиш, чтобы я мог CTRL< /kbd>+SHIFT+ALT+O, чтобы открыть что-либо в любое время с помощью командной строки терминала:

Привязка клавиатуры

И сценарий:

#!/bin/bash

# CD to the home folder (not sure if this is needed, no harm either way)
cd ~/

# Request the filepath
echo -e "\e[1;31mEnter a file or directory:\e[00m"
read -e -i "~/" filename

# Convert ~/ to /home/username/
filename=`eval "echo $filename"`
echo -e "opening\e[1;32m" $filename "\e[00m"

# Open the file
exo-open "$filename"

echo "press enter to exit"
read enter

Моя проблема в том, что порожденная программа связана с терминалом, когда терминал закрывается, он забирает программу с собой - в качестве простого обходного пути у меня есть еще одно приглашение пользователя в конце, чтобы остановить закрытие терминала; Кто-нибудь знает, как я могу разрешить закрытие терминала, но оставить результирующую программу открытой?

Некоторые идеи, которые у меня были / пробовали:

  • запустить disown $! после экзо-открытия (не сработало)
  • используйте nohup (не сработало)
  • Запустите exo-open из PPID (не знаю, как это сделать)

У меня кончается разум :-(


person oodavid    schedule 06.04.2012    source источник
comment
disown принимает идентификатор задания, поэтому используйте %1 вместо $!   -  person glenn jackman    schedule 06.04.2012
comment
Интересно, что мне не удалось выполнить эмулятор терминала по умолчанию. Ошибка ввода/вывода. предупреждение. Я только что решил это, используя setsid exo-open "$filename"   -  person oodavid    schedule 06.04.2012


Ответы (1)


На этот вопрос мне ответил участник форума Xfce ToC

http://forum.xfce.org/viewtopic.php?pid=25670

Оказывается, вы можете использовать setsid так:

#!/bin/bash

# CD to the home folder (not sure if this is needed, no harm either way)
cd ~/

# Request the filepath
echo -e "\e[1;31mEnter a file or directory:\e[00m"
read -e -i "~/" filename

# Convert ~/ to /home/username/
filename=`eval "echo $filename"`
echo -e "opening\e[1;32m" $filename "\e[00m"

# Open the file
setsid exo-open "$filename"
person oodavid    schedule 06.04.2012