Nowe posty

Autor Wątek: Poreblem ze skryptem w KDE  (Przeczytany 6117 razy)

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 170
    • Zobacz profil
Poreblem ze skryptem w KDE
« dnia: 2010-05-30, 22:32:57 »
Mam sobie skrypcik o nazwie montowanie i zawartości:

cd /home/gienek/UMP-src/
. env.sh
cd /home/gienek/UMP-src/tmp/
mv wynik.mp wynik1.mp
make cum
mapedit wynik.mp
Po kolei

1. . env.sh - uruchamia skrypt który ustawia zmienne środowiskowe dla aktualizatora map

2. mv wynik.mp wynik1.mp - tworzy kopię bezpieczeństwa pliku wynik.mp

3. make cum - czyści źródła map oraz pobiera zaktualizowaną wersję tych źródeł i montuje je do pliku wynik.mp

4. mapedit w ostatniej linijce to program windosowy który jest zainstalowany pod PayOnLinux a wynik mp to plik który otwiera program mapedit.

Teraz przejdźmy do sedna problemu

Gdy w konsoli uruchamiam skrypt montowanie poleceniem
. montowanie
to program mapedit uruchamia się i otwiera plik wynik.mp



Gdy w menu KDE utworzę skrót do tego skryptu




 to program mapedit otwiera się ale nie może otworzyć pliku wynik.mp



W czym jest problem?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3075
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Poreblem ze skryptem w KDE
« Odpowiedź #1 dnia: 2010-05-31, 01:04:45 »
Zachowuje się, jakby "make cum" (jakkolwiek głupio to brzmi) nie działał w tej sytuacji.

Zrzuć środowisko do pliku z poziomu skrótu i konsoli i pociągnij DIFF-em. Może to coś podsunie?
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 170
    • Zobacz profil
Poreblem ze skryptem w KDE
« Odpowiedź #2 dnia: 2010-05-31, 07:08:41 »
Cytat: pkraszewski
Zrzuć środowisko do pliku z poziomu skrótu i konsoli i pociągnij DIFF-em. Może to coś podsunie?
Jestem zbyt początkujący, żeby zrozumieć. Mógłbyś wyjaśnić łopatologicznie jak zrobić to o czym piszesz?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3075
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Poreblem ze skryptem w KDE
« Odpowiedź #3 dnia: 2010-05-31, 07:21:11 »
Jako druga linijkę skryptu daj
set > "$0.`date +%Y%m%d_%H%M%S`.log"
To zrzuci aktualne środowisko wykonania skryptu do indywidualnego logu. Teraz odpal skrypt z konsoli (kiedy działa) i ze skrótu (kiedy NIE działa) i porównaj logi.

Różnica powinna wskazać, co jest nie tak.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 170
    • Zobacz profil
Poreblem ze skryptem w KDE
« Odpowiedź #4 dnia: 2010-05-31, 19:18:18 »
Cytat: pkraszewski
Różnica powinna wskazać, co jest nie tak.
Zgodnie z twoimi zaleceniami zmodyfikowałem skrypt następująco

cd /home/gienek/UMP-src/
set > "$0.`date +%Y%m%d_%H%M%S`.log"
. env.sh
cd /home/gienek/UMP-src/tmp/
mv wynik.mp wynik1.mp
make cum
mapedit wynik.mp
Gdy odpalam skrypt z konsoli i wszystko działa to w logu mam to

BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="./montowanie")
BASH_VERSINFO=([0]="4" [1]="0" [2]="33" [3]="2" [4]="release" [5]="x86_64-mandriva-linux-gnu")
BASH_VERSION='4.0.33(2)-release'
BROWSER=/usr/bin/www-browser
CANBERRA_DRIVER=pulse
COLORFGBG='15;0'
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7xCjjtjJUI,guid=1d3e53fbf0cf3d97dd915bba4c03ea78
DESKTOP_SESSION=01KDE4
DIRSTACK=()
DISPLAY=:0.0
DM_CONTROL=/var/run/xdmctl
EUID=10001
GCONF_TMPDIR=/tmp
GPG_AGENT_INFO=/home/gienek/.gnupg/S.gpg-agent:3725:1
GROUPS=()
GS_LIB=/home/gienek/.fonts
GTK_MODULES=canberra-gtk-module
G_FILENAME_ENCODING=@locale
HISTCONTROL=ignorespace
HISTSIZE=1000
HOME=/home/gienek
HOSTNAME=stacjonarny
HOSTTYPE=x86_64
IFS=$' \\t\\n'
INPUTRC=/etc/inputrc
KDE_FULL_SESSION=true
KDE_MULTIHEAD=false
KDE_SESSION_UID=10001
KDE_SESSION_VERSION=4
KONSOLE_DBUS_SERVICE=:1.44
KONSOLE_DBUS_SESSION=/Sessions/1
LANG=pl_PL.UTF-8
LANGUAGE=pl_PL.UTF-8:pl
LC_ADDRESS=pl_PL.UTF-8
LC_COLLATE=pl_PL.UTF-8
LC_CTYPE=pl_PL.UTF-8
LC_IDENTIFICATION=pl_PL.UTF-8
LC_MEASUREMENT=pl_PL.UTF-8
LC_MESSAGES=pl_PL.UTF-8
LC_MONETARY=pl_PL.UTF-8
LC_NAME=pl_PL.UTF-8
LC_NUMERIC=pl_PL.UTF-8
LC_PAPER=pl_PL.UTF-8
LC_SOURCED=1
LC_TELEPHONE=pl_PL.UTF-8
LC_TIME=pl_PL.UTF-8
LESS=-MM
LESSCHARSET=utf-8
LESSKEY=/etc/.less
LESSOPEN='|/usr/bin/lesspipe.sh %s'
LOGNAME=gienek
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.iso=01;31:*.jpg=01;35:*.jpeg=01;35:*.JPG=01;35:*.JPEG=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.divx=01;35:*.xvid=01;35:*.asf=01;35:*.wmv=01;35:*.mp4=01;35:*.3gp=01;35:*.flv=01;35:*.ico=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:*.mp2=00;36:*.mod=00;36:*.xm=00;36:*.s3m=00;36:*.it=00;36:*.wma=00;36:*~=47;30:*.bak=47;30:*.swp=47;30:*.bck=47;30:*.bk=47;30:*.old=47;30:*.tmp=47;30:*.save=47;30:*.rpmsave=47;30:*.rpmnew=47;30:'
MACHTYPE=x86_64-mandriva-linux-gnu
MAIL=/var/spool/mail/gienek
MALLOC_CHECK_=2
MC_SID=12470
MC_TMPDIR=/home/gienek/tmp/mc-gienek
MDV_MENU_STYLE=mandriva
META_CLASS=download
NLSPATH=/usr/share/locale/%l/%N
OLDPWD=/home/gienek/UMP-src/tmp
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/lib/qt4/bin:/home/gienek/bin
PIPESTATUS=([0]="0")
PPID=12470
PROFILEHOME=
PS4='+ '
PWD=/home/gienek/UMP-src
PYTHONDONTWRITEBYTECODE=1
PYTHONSTARTUP=/etc/pythonrc.py
QT4DOCDIR=/usr/share/doc/qt4/doc
QTDIR=/usr/lib/qt4
QTINC=/usr/lib/qt3/include
QTLIB=/usr/lib64
QT_PLUGIN_PATH=/home/gienek/.kde4/lib64/kde4/plugins/:/usr/lib64/kde4/plugins/
QT_XFT=0
SESSION_MANAGER=local/stacjonarny:@/tmp/.ICE-unix/3874,unix/stacjonarny:/tmp/.ICE-unix/3874
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=4
SSH_ASKPASS=/usr/lib64/ssh/ssh-askpass
TERM=xterm
TMP=/home/gienek/tmp
TMPDIR=/home/gienek/tmp
UID=10001
USER=gienek
WINDOWID=52428828
WINDOWPATH=7
XCURSOR_THEME=default
XDG_CONFIG_DIRS=/etc/xdg:/etc/xdg/kde4
XDG_DATA_DIRS=/usr/share:/usr/share:/usr/local/share
XDG_MENU_PREFIX=kde-
XDG_SESSION_COOKIE=478fa3b4d653c8c95fc036974b8140ce-1275325048.212951-181618574
XDM_MANAGED=method=classic
XMODIFIERS=@im=none
_=/home/gienek/UMP-src/
Gdy uruchamiam z menu kde i nie działa to w logu mam to:

BASH=/bin/sh
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/home/gienek/UMP-src/tmp/montowanie")
BASH_VERSINFO=([0]="4" [1]="0" [2]="33" [3]="2" [4]="release" [5]="x86_64-mandriva-linux-gnu")
BASH_VERSION='4.0.33(2)-release'
BROWSER=/usr/bin/www-browser
CANBERRA_DRIVER=pulse
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7xCjjtjJUI,guid=1d3e53fbf0cf3d97dd915bba4c03ea78
DESKTOP_SESSION=01KDE4
DESKTOP_STARTUP_ID='stacjonarny;1275325789;974122;3882_TIME790396'
DIRSTACK=()
DISPLAY=:0.0
DM_CONTROL=/var/run/xdmctl
EUID=10001
GCONF_TMPDIR=/tmp
GPG_AGENT_INFO=/home/gienek/.gnupg/S.gpg-agent:3774:1
GROUPS=()
GS_LIB=/home/gienek/.fonts
GTK_MODULES=canberra-gtk-module
G_FILENAME_ENCODING=@locale
HISTCONTROL=ignoredups
HISTSIZE=1000
HOME=/home/gienek
HOSTNAME=stacjonarny
HOSTTYPE=x86_64
IFS='
'
INPUTRC=/etc/inputrc
KDE_FULL_SESSION=true
KDE_MULTIHEAD=false
KDE_SESSION_UID=10001
KDE_SESSION_VERSION=4
LANG=pl_PL.UTF-8
LANGUAGE=pl_PL.UTF-8:pl
LC_ADDRESS=pl_PL.UTF-8
LC_COLLATE=pl_PL.UTF-8
LC_CTYPE=pl_PL.UTF-8
LC_IDENTIFICATION=pl_PL.UTF-8
LC_MEASUREMENT=pl_PL.UTF-8
LC_MESSAGES=pl_PL.UTF-8
LC_MONETARY=pl_PL.UTF-8
LC_NAME=pl_PL.UTF-8
LC_NUMERIC=pl_PL.UTF-8
LC_PAPER=pl_PL.UTF-8
LC_SOURCED=1
LC_TELEPHONE=pl_PL.UTF-8
LC_TIME=pl_PL.UTF-8
LESS=-MM
LESSCHARSET=utf-8
LESSKEY=/etc/.less
LESSOPEN='|/usr/bin/lesspipe.sh %s'
LOGNAME=gienek
LS_COLORS=
MACHTYPE=x86_64-mandriva-linux-gnu
MAIL=/var/spool/mail/gienek
MALLOC_CHECK_=2
MDV_MENU_STYLE=mandriva
META_CLASS=download
NLSPATH=/usr/share/locale/%l/%N
OLDPWD=/home/gienek/Dokumenty
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/lib/qt4/bin:/home/gienek/bin
PIPESTATUS=([0]="0")
POSIXLY_CORRECT=y
PPID=3829
PS4='+ '
PWD=/home/gienek/UMP-src
PYTHONDONTWRITEBYTECODE=1
PYTHONSTARTUP=/etc/pythonrc.py
QT4DOCDIR=/usr/share/doc/qt4/doc
QTDIR=/usr/lib/qt4
QTINC=/usr/lib/qt3/include
QTLIB=/usr/lib64
QT_PLUGIN_PATH=/home/gienek/.kde4/lib64/kde4/plugins/:/usr/lib64/kde4/plugins/
QT_XFT=0
SESSION_MANAGER=local/stacjonarny:@/tmp/.ICE-unix/3874,unix/stacjonarny:/tmp/.ICE-unix/3874
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=2
SSH_ASKPASS=/usr/lib64/ssh/ssh-askpass
TERM=dumb
TMP=/home/gienek/tmp
TMPDIR=/home/gienek/tmp
UID=10001
USER=gienek
WINDOWPATH=7
XCURSOR_THEME=default
XDG_CONFIG_DIRS=/etc/xdg:/etc/xdg/kde4
XDG_DATA_DIRS=/usr/share:/usr/share:/usr/local/share
XDG_MENU_PREFIX=kde-
XDG_SESSION_COOKIE=478fa3b4d653c8c95fc036974b8140ce-1275325048.212951-181618574
XDM_MANAGED=method=classic
XMODIFIERS=@im=none
_=/home/gienek/UMP-src/
Za pierwszym razem gdy wszystko działa to log utworzył się w /home/gienek/UMP-src a za drugim razem gdy uruchomiłem go z menu kde to utworzył się w /home/gienek/UMP-src/tmp

Jeśli mógłbyś przeanalizować logi i coś z nich wyciągnąć to byłbym wdzięczny bo ja osobiście niewiele z tego rozumiem :(


EDIT
PS

Przyszło mi do głowy coś innego. Czy da się jakoś zmodyfikować mój skrypt lub lub skrót w menu kde tak aby na początku po kliknięciu na skrót w menu kde otworzyła się konsola a potem po kolei to co jest w skrypcie było wykonywane w konsoli?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3075
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Poreblem ze skryptem w KDE
« Odpowiedź #5 dnia: 2010-06-01, 07:27:32 »
Dobra, trochę się rozjaśniło..

W środowiskach widzę (ok, DIFF widzi) takie różnice, mogące potencjalnie mieć wpływ na wykonanie:
* W KDE wykonywany jest przez SH, pod konsolą przez BASH. Skrypt jako taki jest nieczuły na tą zmianę, ale nie wiem co jest w env.sh - tam może być różnica.
* W KDE terminal jest typu DUMB, w konsoli XTERM

Co do pierwszego: dodaj na początku skryptu linijkę
#!/bin/bash
Dodatkowo pamiętaj, że uruchomienie skrótu przez . nazwa i ./nazwa to dwie różne sprawy!

Co do drugiego punktu, przy konfiguracji skrótów w KDE masz opcję "uruchom w konsoli".
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 170
    • Zobacz profil
Poreblem ze skryptem w KDE
« Odpowiedź #6 dnia: 2010-06-01, 12:16:20 »
Cytat: pkraszewski
Dobra, trochę się rozjaśniło..

W środowiskach widzę (ok, DIFF widzi) takie różnice, mogące potencjalnie mieć wpływ na wykonanie:
* W KDE wykonywany jest przez SH, pod konsolą przez BASH. Skrypt jako taki jest nieczuły na tą zmianę, ale nie wiem co jest w env.sh - tam może być różnica.
Zawartość pliku env.sh

export DIR=UMP-Siedlce
export CVS=/home/gienek/ump-src
Wpis UMP-Siedlce zmieniam na inny w zależności od tego jaki region polski chcę zamontować.

Cytat: pkraszewski
Co do pierwszego: dodaj na początku skryptu linijkę
#!/bin/bash
Próbowałem to dopisać na początku skryptu ale jak to zrobiłem to przy uruchomianiu z konsoli był identyczny efekt jak przy uruchomianiu z skrótu w menu KDE.
Czyli MapEdit nie mógł otworzyć pliku wynik.mp bo ten plik zwyczajnie nie został utworzony przez make cum. Gdy całość odpalam przez konsolę to pojawia się ten plik a gdy przez skrót to nie :(

Polecenie make cum czyści zawartość po poprzednim montowaniu, pobiera zaktualizowane źródła map z internetu i wrzuca to do pliku wynik.mp.
W katalogu w którym napisałem skrypt i w którym tworzy się plik wynik.mp jest jeszcze plik Makefile Podać jego zawartość?


Cytat: pkraszewski
Dodatkowo pamiętaj, że uruchomienie skrótu przez . nazwa i ./nazwa to dwie różne sprawy!
To może zamiast . env.sh wpisać w skrypcie ./env.sh? Jak wrucę do domu to wypróbuję ten wpis.

Cytat: pkraszewski
Co do drugiego punktu, przy konfiguracji skrótów w KDE masz opcję "uruchom w konsoli".
Zaznaczałem to ale niestety efekt był taki, że okienko konsoli tylko mignęło i koniec.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3075
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Poreblem ze skryptem w KDE
« Odpowiedź #7 dnia: 2010-06-01, 14:56:26 »
Właśnie to . env.sh jest poprawne. Natomiast we wcześniejszych postach pokazywałeś, że sam skrypt odpaliłeś przez . montowanie, co zachowuje się trochę inaczej niż odpalenie przez  ./montowanie.

Nie rozwiążesz swojego problemu, jeżeli wersja z #!/bin/bash nie zadziała, więc skup się na tym.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 170
    • Zobacz profil
Poreblem ze skryptem w KDE
« Odpowiedź #8 dnia: 2010-06-13, 10:42:54 »
No to coś prostrzego

Jak zrobić skrót  na pulpicie lub w menu start lub napisać jakiś skrypt aby po kliknięciu na niego myszką uruchomiła mi się konsola z włączonym midnight commanderem ale tak, żeby w midnight commanderze widniał otwarty katalog /home/gienek/ump/tmp

Bees

  • Gość
Poreblem ze skryptem w KDE
« Odpowiedź #9 dnia: 2010-06-13, 18:37:17 »
Ogólnie

mc-start.sh

#w skrypcie; uruchomi się w tym katalogu:
mc /home/gienek/ump/tmp
edit: xterm -e mc /home/gienek/ump/tmp
#mc home
#uruchomi w katalogu gdzie leży skrypt

Nie analizowałem całego przebiegu dyskusji ... ale spróbuj wpisać przy pierwszym skrypcie taką frazę:

cd `find $0 -printf %h`

pozwoli ona zorientować się powłoce gdzie leży katalog skryptu przy odpaleniu przez podwojne klikniecie,
 być może w tym jest pies pogrzebany.

Pozdrawiam!

PS
Ja mam tak skojarzone *.sh
Konqueror; opcje; skojarzenia; x-shellscript; *.sh uruchom w programie "konsole -e" nie zamykaj terminala.

edit:sprawdzilem : Konqueror; opcje; skojarzenia; x-shellscript; *.sh uruchom w programie "xterm"