[Решено] Помогите с простым скриптом запуска приложения

Автор Sergei_Alekseev, 04 августа 2013, 22:54:04

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Sergei_Alekseev

Скрипт запуска XnView:
#!/bin/sh
dirname="$(dirname "$(readlink -e "$0")")"
export LD_LIBRARY_PATH="$dirname"/lib
export QT_PLUGIN_PATH="$dirname"/lib
"$dirname"/XnView "$@"


Как здесь правильно прописать чтобы аутпут улетал в /dev/null?

yura_n

#1
Вероятно так:

dirname="$(dirname "$(readlink -e "$0")")"&>/dev/null

P.S. Кавычки в своем скрипте исправьте. Там где export.

Sergei_Alekseev

Цитата: yura_n от 04 августа 2013, 23:12:29P.S. Кавычки в своем скрипте исправьте. Там где export.

Не понял насчёт кавычек, это не мой скрипт, а разработчика xnview)

Ничего не меняется так, аутпут идёт в консоль.
Если запускать  ./xnview.sh &>/dev/null то аутпута нет, но мне хотелось бы что бы это было в самом скрипте прописано.

yura_n

#3
Цитата: Sergei_Alekseev от 05 августа 2013, 01:03:23Не понял насчёт кавычек, это не мой скрипт, а разработчика xnview)

export LD_LIBRARY_PATH="$dirname"/lib

Неправильно. Если предположить, что в переменной dirname что-то есть, правильней все равно будет так:

export LD_LIBRARY_PATH="$dirname/lib"

Или так:

export LD_LIBRARY_PATH="$dirname""/lib"


Да и строка с dirname внушает сомнения (самая первая).

Цитата: Sergei_Alekseev от 05 августа 2013, 01:03:23Ничего не меняется так, аутпут идёт в консоль.
Какой конкретно вывод идет в консоль? Здесь его напишите.

Sergei_Alekseev

Цитата: yura_n от 05 августа 2013, 01:10:32Какой конкретно вывод идет в консоль? Здесь его напишите.

Запущено симлинком /usr/bin/xnview - /opt/XnView/xnview.sh

serge@debian:~$ xnview
XNVIEW restoreGeometry before : 640 480
XNVIEW restoreGeometry after : 1280 1024
QMetaObject::invokeMethod: No such method MyTabBar::layoutTabs()
QSslSocket: cannot resolve SSLv2_client_method
QSslSocket: cannot resolve SSLv2_server_method
w.init
XNVIEW SIZE 1280 1024


########### BrowserWindow :: BrowserWindow

Object::connect: No such slot BrowserWindow::onVideoGallery()
##PB connect <1onVideoGallery()>
MENU install : b1f02908
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
QWidget::setMinimumSize: (favoriteD/QDockWidget) Negative sizes (0,-1) are not possible
QWidget::setMinimumSize: (categoryD/QDockWidget) Negative sizes (0,-1) are not possible
QWidget::setMinimumSize: (prevD/QDockWidget) Negative sizes (0,-1) are not possible
########### BrowserWindow :: ok create (640 480)
BrowserWindow :: changeVisibility()
BrowserWindow :: updateMenu()
SIZE : 0 66  (-1)
SIZE : 0 41  (-1)
SIZE : 0 90  (-1)
SIZE : 0 65  (-1)
SIZE : 0 90  (-1)
SIZE : 0 65  (-1)
BrowserWindow :: changeVisibility()
BrowserWindow :: updateMenu()
BrowserWindow :: changeVisibility()
BrowserWindow :: updateMenu()
########### BrowserWindow :: restoreState (1280 1024)
BrowserWindow :: restoreState => 1280 1024
                              => 990 932
BrowserWindow :: restoreState ok => 990 932
XNVIEW SIZE ok
XNVIEW 1 ok
## MyTabWidget :: resizeEvent : 1280 1024
## BROWSER RESIZE: 1098 341
QWidget::setMinimumSize: (favoriteD/QDockWidget) Negative sizes (0,-1) are not possible
QWidget::setMinimumSize: (categoryD/QDockWidget) Negative sizes (0,-1) are not possible
QWidget::setMinimumSize: (prevD/QDockWidget) Negative sizes (0,-1) are not possible
### MyBitmapView (96f9df0) :: resizeEvent 641 230
### MyBitmapView (96f9df0) :: resizeEvent 641 913
## BROWSER RESIZE: 1280 1024
XNVIEW 2 ok
w.start
### BrowserWindow :: onStart go
########### BrowserWindow :: restoreState (1280 1024)
BrowserWindow :: restoreState => 1280 1024
                              => 394 938
QWidget::setMinimumSize: (categoryD/QDockWidget) Negative sizes (0,-1) are not possible
QWidget::setMinimumSize: (favoriteD/QDockWidget) Negative sizes (0,-1) are not possible
BrowserWindow :: restoreState ok => 394 938
### BrowserWindow :: onStart
BrowserWindow :: onStart 2
setPathname </home/serge/Pictures/Wallpapers/>
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
### ThumbLoaderThread :: setFileList(0)
### ThumbLoaderThread :: setFileList() wait
######ThumbLoaderThread :: run : 96bb3b0
######ThumbLoaderThread :: forever : 96bb3b0
### ThumbLoaderThread :: setFileList() after wait
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
### ThumbLoaderThread :: setFileList ok
## OPEN FOLDER
## OPEN FOLDER ok
## updateLabels
## updateLabels ok
######ThumbLoaderThread :: forever 2 : 96bb3b0
CHECK <0>
######ThumbLoaderThread :: forever : 96bb3b0
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
TIME  8 
MyDirModelThread :: run
## OPEN FOLDER done
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
### ThumbLoaderThread :: setFileList(203)
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
######ThumbLoaderThread :: forever 2 : 96bb3b0
CHECK <202>
### START 203
######### TIME ==> 0
######ThumbLoaderThread :: start : 202
### ThumbLoaderThread :: setFileList ok
MyView::set /home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg
101  Unregistered schema namespace URI
BrowserWindow :: updateMenu()
### BrowserWindow :: finish
101  Unregistered schema namespace URI
LOAD INFO </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg>
## MyTabWidget :: resizeEvent : 1280 955
### MyBitmapView (96f9df0) :: resizeEvent 641 844
## BROWSER RESIZE: 1280 955
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
###### LOAD BITMAP </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg>
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
## BitmapLoadThread :: load 160 128
###### LOAD BITMAP </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg>
LOAD BITMAP </home/serge/Pictures/Wallpapers/backgroud.py>
GFF :: LoadThumbnail : 2
ThumbLoaderThread - ADD into DB (20858)
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
###### onChildrenChecked 2 <Wallpapers>
###### onChildrenChecked 1 <gals-3d>
###### onChildrenChecked 0 <Anime>
###### onChildrenChecked 23 <Templates>
###### onChildrenChecked 21 <Share>
###### onChildrenChecked 17 <Phone>
###### onChildrenChecked 4 <Desktop>
###### onChildrenChecked 1 <bluetooth>
## MyView::onLoaded </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg> </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg> </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg> (0)
## MyView::onLoaded ok
### resetViewport (96f9df0)  ==> 641 844  (641 512) 0 0
Create Tree : File
Create Tree : Image
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
## BitmapLoadThread :: load 1280 1024
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI### ThumbLoaderThread :: setFirstItemToLoad
### ThumbLoaderThread :: setFirstItemToLoad ok

101  Unregistered schema namespace URI
## MyView::onLoaded </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg> </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg> </home/serge/Pictures/Wallpapers/__before______by_hitmanx3z-d3ht703.jpg> (1)
## MyView::onLoaded ok
101  Unregistered schema namespace URI
### resetViewport (96f9df0)  ==> 641 844  (641 512) 0 0
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
SIZE : 0 90  (-1)
SIZE : 0 65  (-1)
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
101  Unregistered schema namespace URI
TIME ==> 1038
######ThumbLoaderThread :: forever : 96bb3b0
BrowserWindow :: updateMenu()


Я в скриптах ничего не понимаю) но мне кажется что в первой строчке берётся путь, где запущен скрипт и подставляется потом в dirname.
Кавычки тогда вроде как вполне логично стоят. Не?

yura_n

У вас вывод дает не скрипт, а сама программа. Можно скрипт, который вы запускаете, завернуть еще в один, тогда вывод должен отправиться в /dev/null. Что-то вроде:

#!/bin/sh
path_to_xnview/xnview.sh &>/dev/null

Sergei_Alekseev

#6
Цитата: yura_n от 05 августа 2013, 02:10:33У вас вывод дает не скрипт, а сама программа

Это понятно)
Если сделать "скрипт на скрипт", то аутпут всё равно выдаёт точно так же. >:(

А вот xnview &>/dev/null - тишина

Сообщение объединено: 05 августа 2013, 02:42:00

Всё, я сделал по аналогии с mc.ext файлом:
#!/bin/sh
dirname="$(dirname "$(readlink -e "$0")")"
export LD_LIBRARY_PATH="$dirname"/lib
export QT_PLUGIN_PATH="$dirname"/lib
"$dirname"/XnView "$@" >/dev/null 2>&1 &


8)

yura_n

Цитата: Sergei_Alekseev от 05 августа 2013, 02:30:35Если сделать "скрипт на скрипт", то аутпут всё равно выдаёт точно так же. >:(
Специально сейчас повторил. Ничего никуда не выдает. И не может. Не вешайте лапшу на уши. Или разберитесь в синтаксисе.

Sergei_Alekseev

#8
Цитата: yura_n от 05 августа 2013, 03:00:43Не вешайте лапшу на уши.

Вы что, съели что-то несвежее?




yura_n

#9
Цитата: Sergei_Alekseev от 05 августа 2013, 04:53:33Вы что, съели что-то несвежее?
Я ничего не съел. И даже скачал этот XnView. Смотрите сам. Ваш скрипт, даже изменять почти не стал.

Запускаю его:

Как видите есть вывод.
Теперь скрипт для скрипта:

Запускаю его:

Нет вывода.

Sergei_Alekseev

Этой программе - xnview 1.70 - чёрт знает сколько лет  :o
xnview mp 0.61 свежая.

yura_n

Цитата: Sergei_Alekseev от 05 августа 2013, 06:34:32Этой программе - xnview 1.70 - чёрт знает сколько лет  :o
Да мне она не нужна. Я ее скачал только для того, чтобы было к чему применить ваш скрипт. На мой взгляд geeqie в качестве просмотрщика изображений не хуже, и менее избыточна.

Sergei_Alekseev

Да причём тут нужна/не нужна. Она работает абсолютно по-другому.
Я в курсе geeqie и других вьюеров.
Вопрос снят с повестки дня.

yura_n

#13
Цитата: Sergei_Alekseev от 05 августа 2013, 15:56:22Да причём тут нужна/не нужна. Она работает абсолютно по-другому.
Ладно, поехали по новой.  ;D xnview mp 0.61.
Оригинальный скрипт:

Запускаю его.

Есть вывод.
Теперь скрипт на скрипт.

Запускаю его.

Нет вывода.
Всего этого можно было и не делать, но вы же не поверите.  ;D Смысл в том, что для каждого нового скрипта запускается и новая копия интерпретатора, вот его вывод и сбрасывается в /dev/null.

Sergei_Alekseev

Вы, сударь, как-то странно себя ведёте. Вы видели мой скриншот с аутпутом после команды test.sh? Чему я должен поверить?
Обратите внимание что аутпут у меня появляется как бы после нового промпта, а у вас ожидает завершения программы.