2012-04-06 2 views
1

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

The keyboard binding

И сценарий:

#!/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 (не работает)
  • Run экзо-открыт с PPID (не знаю, как это сделать)

в моем конце остроумия :-(

+0

открестился берет работу идентификатор, так что используйте '% 1 'вместо' $! ' –

+0

Интересно, что дало мне« Не удалось выполнить эмулятор терминала по умолчанию. Ошибка ввода/вывода. "Я только что решил это, используя' setsid exo-open '$ filename " – oodavid

ответ

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" 

 Смежные вопросы

  • Нет связанных вопросов^_^