Skip to content

Instantly share code, notes, and snippets.

@KarolinaCzo
Last active March 8, 2019 18:00
Show Gist options
  • Save KarolinaCzo/4792e99c275da85c937ed43a1e97abd9 to your computer and use it in GitHub Desktop.
Save KarolinaCzo/4792e99c275da85c937ed43a1e97abd9 to your computer and use it in GitHub Desktop.
Make a script to run SynfigStudio from the console on Linux Fedora
1) Stwórz katalog o nazwie 'bin' w katalogu domowym
2) Teraz, jeżeli skrypt był zapisany wczesniej w pliku z jakimkolwiek rozszerzeniem (w tym wypadku .txt)
trzeba go przepisać na plik bez rozszerzenia.
Jeżeli wcześniej wejdziemy do folderu, w którym znajduje się skrypt to wystarczy podac jego nazwę bezpośrednio.
mv <nazwa-skryptu> ~/bin/<nowa-nazwa-skryptu>
Jeśli natomiast nie jesteśmy w folderze z tym plikiem, to nalezy podac do niego ścieżkę bezwzględną.
mv <ścieżka-do-skryptu> ~/bin/<nowa-nazwa-skryptu>
3) Powloka będzie szukała programów do uruchomienia w konkretnych miejscach
echo $PATH
przykładowy output:
/usr/local/bin:/usr/bin:/bin:/home/<nazwa-użytkownika>/bin:/usr/local/sbin:/usr/sbin
Tu pojawia się bin parokrotnie. Ściezki sa oddzielone dwukropkami. Wszystko co pomiedzy dowolnymi dwoma :dwukropkami: to oddzielna sciezka.
PATH z cat ~/.zshrc to: PATH=$HOME/bin:/usr/local/bin:$PATH
$HOME to inna nazwa na ~
A na koncu jest doklejony $PATH, poniewaz DOKLEJAMY sciezki na poczatku $PATH. Na przykład:
chce dokleic /home/janek/bin => to wpisze PATH=/home/janek/bin:$PATH
Swoją drogą to jest tylko dla powłoki zsh. Różne powłoki czytają różne pliki inicjalizacyjne i inaczej wywołuje sie je w terminalu - po innej nazwie.
4) Teraz trzeba sprawdzić jakie sa uprawnienia do pliku. Będąc w folderze z plikiem, w konsoli należy wpisać:
ls -l <nazwa-pliku>
pzykładowy output:
-rw-rw-r--. 1 <nazwa-użytkownika> 139 03-06 21:14 <nazwa-pliku-ze-skryptem>
Skupiamy się na '-rw-rw-r--'. Pierwsza kreska nas nie interesuje w tej chwili.
Potem sa trzy x, trzy grupy kresek: 'rwxrwxrwx'.
r == read
w == write
x == execute
I po kolei sa uprawnienia dla: user, group, others.
Widać, że 'x' jest wygaszony dla wszystkich, a musimy go włączyć dla 'usera' - czyli w pierwszym.
Można to zrobić programem 'chmod', a konkretniej:
chmod u+x <nazwa-pliku-ze-skryptem>
Wytłumaczenie: u+x: [u]serowi [+] dodaj uprawnienie do [x] wykonywania.
5) Ponieważ wcześniej skrypt zapisany był w pliku .txt na Windowsie, windows dodał swoje niedrukowalne
znaki, które zostały nawet po przepisaniu pliku na plik bez rozszerzenia. Trzeba bło je usunąć.
Najpierw sprawdzić, czy takie znaki autentycznie są komendą:
cat -v <nazwa-pliku-ze-skryptem>
I tak, skrypt zawierał m.in. znaki '^M'.
Trzeba było je usunąć wywołując komendę:
sed -i 's/\r//' <nazwa-pliku-ze-skryptem>
I potem jeszcze raz:
cat -v <nazwa-pliku-ze-skryptem>
Żeby upewnić się, czy te niedrukowalne znaki zostały usunięte.
6) Oczywiście popełniłam błąd zakładając, że plik AppRun, którym otwiera się SynfigStudio ma rozszerzenie.
Okazało się, że nie ma żadnego rozszerzenia. Upewnic się czy plik ma i jakie ma dokładnie rozszerzenie
można wykorzystać komendę:
ls ~/<ścieżka-do-folderu-z-plikiem>/
8) Wywołanie pliku przez konsolę => wystarczy w konsoli wpisac nazwę pliku ze skryptem i wcisnąć 'enter'
________________
Wywoływany skrypt:
#/usr/bin/env bash
~/<ścieżka-do-folderu-z-plikiem>/AppRun >/dev/null 2>&1 </dev/null &
disown -h
Opis:
>/dev/null przekierowuje standardowe wyjscie do /dev/null
2>&1 przekierowuje standardowy strumien bledow TAM GDZIE OBECNIE WSKAZUJE PIERWSZY DESKRYPTOR
czyli standardowe wyjscie, czyli to co przed chwila przekierowalismy, czyli juz w tej chwili /dev/null
</dev/null przekierowuje na wejscie /dev/null, zamiast obecnego terminala.
A "&" na koncu puszcza ten program w tle powloki (in the background)
Na koniec disown -h odlacza program od obecnej powloki i terminala, w zwiazku z czym program zostanie
sierota i zostanie "adoptowany" przez proces init, dzieki czemu powloka wylaczenie powloki i terminala
nie zamknie juz programu i dziala sobie juz sam.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment