Nowe posty

Autor Wątek: Problem ze skryptem przeniesionym na nową maszynę  (Przeczytany 5201 razy)

Offline Paweł Zbroszczyk

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 32
    • Zobacz profil
Problem ze skryptem przeniesionym na nową maszynę
« dnia: 2020-11-29, 11:59:43 »
Witam

Mam taki fragment skryptu:
"BAZY=/var/lib/firebird/data
KOPIE=/server/kopie-pcb
MAILTO=

FB_PASS=/etc/firebird/2.1/SYSDBA.password

[ ! -r $FB_PASS ] && exit

source $FB_PASS && export ISC_USER ISC_PASSWORD
"
Jak próbuję go uruchomić na nowej maszynie to dostaję komunikat :
source: not found
shopt: not found

Oczywiście plik jest we wskazanym miejscu.

Możecie podpowiedzieć co może być przyczyną ?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2709
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #1 dnia: 2020-11-29, 14:20:35 »
Za mały fragment na sensowną odpowiedź. Co prawda komunikat błędu sugeruje raczej sh niż bash, ale poczytaj o debugowaniu skryptów.

Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline Paweł Zbroszczyk

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 32
    • Zobacz profil
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #2 dnia: 2020-11-29, 14:48:12 »
Aż tak bardzo nie siedzę językach prog.
Może screen coś rozjaśni.W załączniku
Lub oczywiście cały skrypt mogę wrzucić.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2709
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #3 dnia: 2020-11-29, 15:02:08 »
Wygląda na to, że skrypt jest napisany w bashu (choćby użycie shopt) a próbujesz/system próbuje odpalić go jako skrypt sh (pod bashem błąd source wygląda inaczej, pod sh - tak jak w twoim przykładzie).

Upewnij się, że pierwsza linijka skryptu ma dokładnie postać, bez niczego przed, bez niczego powyżej.
#!/bin/bash

... reszta skryptu
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline Paweł Zbroszczyk

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 32
    • Zobacz profil
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #4 dnia: 2020-11-29, 15:11:27 »
Ok

Większy kawałek.
Ale jest bin/sh

#!/bin/sh

# wersja z 2009.02.25

BAZY=/var/lib/firebird/data
KOPIE=/server/kopie-pcb
MAILTO=

FB_PASS=/etc/firebird/2.1/SYSDBA.password

[ ! -r $FB_PASS ] && exit

source $FB_PASS && export ISC_USER ISC_PASSWORD

#source /etc/default/locale && export LANG

#umask 0027

LOCKFILE=/var/lock/local-pcbbackup

if [ -x /usr/bin/lockfile-create ]
then
  if ! LOCK=`lockfile-create $LOCKFILE &> /dev/null || lockfile-create --retry 1 $LOCKFILE &> /dev/null`
  then
    [ -z $MAILTO ] || echo $LOCK $LOCKFILE | mail -s "[UWAGA] poprzednia kopia baz ciagle sie robi" $MAILTO
    exit
  fi
  lockfile-touch $LOCKFILE &
  LOCKTOUCHPID="$!"
fi

[ -d $KOPIE ] || mkdir $KOPIE
rm -f $KOPIE/*.gdb $KOPIE/*.gbk $KOPIE/*.gfix $KOPIE/*.gbr $KOPIE/*.ngdb $KOPIE/*.rst

shopt -qs nullglob
for BAZA in $BAZY/[[:alnum:]]*.gdb

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2709
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #5 dnia: 2020-11-29, 18:18:29 »
Cytuj
Ale jest bin/sh

No to jest źle. Powłoka /bin/sh nie ma ani polecenia source ani shopt. One są z powłoki /bin/bash. Możliwe, że na poprzednim systemie /bin/sh było symlinkiem do /bin/bash i dlatego działało.
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline Paweł Zbroszczyk

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 32
    • Zobacz profil
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #6 dnia: 2020-11-29, 18:55:45 »
To mogę sprawdzić.

Natomiast pytanie jak można to naprawić?
Czy link symboliczny wprost załatwi sprawę i jak go ustawić?

Poza tym ten sam skrypt zwraca również błąd  brak polecenia gbak co sugeruje ,że Path jest nie ustawiony.
Sprawdzałem w starym systemie , ale bashsrc nie znalazłem żadnej definicji Path.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2709
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #7 dnia: 2020-11-29, 19:07:14 »
Cytuj
Aż tak bardzo nie siedzę językach prog.
Cytuj
Czy link symboliczny wprost załatwi sprawę i jak go ustawić?
Nie, takich rzeczy w systemie nie rób, jeżeli nie masz wiedzy, w jaki sposób to wpływa na system. Po prostu popraw pierwszą linijkę skryptu na bash według mojego przykładu i tyle.

A program gbak jest składnikiem narzędzi do zarządzania bazą firebird.
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline Paweł Zbroszczyk

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 32
    • Zobacz profil
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #8 dnia: 2021-02-09, 11:51:59 »
Witam.Poprawiłem

Teraz jest jednak problem ze zmienną PATH.
Muszę ją ustawić dla /opt/firebird/bin , bo nie może dobrać się do poleceń.

Jak to zrobić poprawnie i skutecznie?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2709
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
Odp: Problem ze skryptem przeniesionym na nową maszynę
« Odpowiedź #9 dnia: 2021-02-11, 18:48:44 »
Linijka będzie brzmiała dosłownie (nie przekręć żadnego znaku, nie dodawaj żadnych spacji):

export PATH=/opt/firebird/bin:$PATH

Możesz dodać ją na przykład do pliku .profile w katalogu domowym użytkownika, który ma mieć dostęp do tych aplikacji.
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy