Использование Chrome xdg-open
открыть неизвестные файлы. Проблема с xdg-open
сценарий - то, что попытки выяснить, какую настольную среду Вы имеете. Это делает это путем проверки
detectDE()
{
if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
fi
}
Так как Openbox не устанавливает ни одной из этих переменных $DE
пусто, и используется универсальный подход.
В версии 1.0 xdg-utils
поведение по умолчанию похоже на это
open_generic()
{
IFS=":"
for browser in $BROWSER; do
if [ x"$browser" != x"" ]; then
browser_with_arg=`echo "$browser" | sed s#%s#"$1"#`
if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
else $browser_with_arg;
fi
if [ $? -eq 0 ]; then exit_success;
fi
fi
done
exit_failure_operation_impossible "no method available for opening '$1'"
}
Вы видите, что это пытается открыть все с $BROWSER
. Когда $BROWSER
не установлен это будет установлено на firefox:mozilla:netscape
.
Таким образом, проблема состоит в том, что эфир, необходимо установить DE, который затем приводит к новым проблемам (как программы, которые пытаются соединиться с сессией DE) или Вы устанавливаете Ваш $BROWSER
к чему-то как exo-open
, gnome-open
или kfmclient exec
.
Новый выпуск xdg-open
кажется, фиксирует это, но это, кажется, берет навсегда.
еще невозможно. Существует запрос на вытягивание данных, которые, кажется, Работа для некоторых людей, хотя: Mosh / Pull / 583
Все кредиты отправляются в парень с именем
из #mosh
канал freenode
Похоже, что вы описываете программу A, работающую в фоновом режиме. Процесс по-прежнему может печататься на терминале, даже если он выполняется в фоновом режиме.
Bash пример:
#----background_program----#
#!/bin/bash
for ((i=0;i<=10;i++)); do
echo "$i"
sleep 5
done
exit 0
Вы можете запустить это в фоновом режиме, увидеть его вывод всплывает на ваш терминал. После первого выходного сообщения курсор снимается с подсказки. Затем вы можете выполнять другие команды на переднем плане, пока фоновая программа _
все еще выполняется:
./background_program & # '&' to put in background
echo "wut"
echo "foo"
echo "bar"
Это даст вам что-то вроде:
sandbox@Dionysus:~$ ./background_program &
[1] 6197
sandbox@Dionysus:~$ 0
echo "wut"
wut
sandbox@Dionysus:~$ 1
echo "foo"
foo
sandbox@Dionysus:~$ 2
echo "bar"
bar
sandbox@Dionysus:~$ 3
4
5
6
7
8
9
10
Я сделал это в gnome-терминале, но я не думаю, что поведение является редким.
Если вы должны были выполнить свою программу A на переднем плане, вы получите именно то, что сказал @ Стивен, набрав. Программа не выполняется, так как команда загружается в буфер, а затем интерпретируется после завершения программы A.
-121--121397- Причина этого в том, что один из скриптов входа на целевом сервере использует stty...
для установки характеристик терминала. Команда завершается неуспешно, когда у нее нет tty, т.е. когда вы подключаетесь к scp
.
Решение состоит в том, чтобы защитить stty
так, чтобы он запускался только при наличии интерактивного сеанса. Существует ряд способов сделать это; Вот несколько примеров для оболочек типа bash/sh:
Ugly:
stty ... >/dev/null 2>&1
Works for me:
test -n "$PS1" && stty ...
Рекомендуется в другом месте SE :
# Check for a bash login shell
case $- in
*i*) stty ... ;;
esac
-121--62067- Я вижу «жалобы» на то, что мош не поддерживает X11 туннелирование; Я не ожидаю, что он поддерживает что-то, кроме интерактивного терминала.
Может немного улучшить поведение в программах gnome, если вы используете Files '' connect to server 'с url' ssh ://host '. То есть gnome vfs может обрабатывать зависания немного лучше. Или нет.