Skocz do zawartości

[bash] Odpalenie Skryptu


lszk

Rekomendowane odpowiedzi

Do systemu loguje się przez startx, więc napisałem sobie mały skrypt umozliwiający wybór środowiska do uruchomienia. Dopisałem sobie alias na ten skrypt w ~/.bashrc. Jednak po ponownym uruchomieniu kompa skrypt się nie wykonuje, bo alias nie działa. Żeby go odpalić, musze wydać polecenie source ~/.bashrc. Próbowałem też z plikiem ~/.bash_profile, ale też nie wyszło. Mam co prawda 2 koncepcje, jakby można to zrobić inaczej, ale dlaczego nie działa ta sztuczka z ~/.bashrc?

Odnośnik do komentarza
Udostępnij na innych stronach

Alias podrobiłem pod polecenie startx

alias startx='~/bash/start'

Pod pojedyńczą litere nie sprawdzałem → zrobie z ciekawości, jak stargam do końca film z torrenta.

 

[edit]

 

Właśnie zaobserwowałem takie coś. Po reboocie i startx X'sy normalnie startują bez udziału mojego skryptu. Po odpaleniu polecenia startx już w fluxie, wybór środowiska się pojawia. czyli wychodzi na to, że z pliku ~/.bashrc sys czyta dopiero za uruchomieniu x'sów? To gdzie możnaby dopisać taki alias, aby się uruchamiał przez x'sami? Np. po zalogowaniu. Ofkoz chodzi mi o inne miejsce niż w /etc/init.d/

Edytowane przez lszk
Odnośnik do komentarza
Udostępnij na innych stronach

Hmm, na slacku jako user dawałem xwmconfig i miałem wybór.Jakby gotowy skrypt przenieść do /bin i dać mu

chmod +s  /bin/nazwa_skryptu

Przecież np polecenia systemowe są w /bin jako wykonywalne, są wczytywane i user może je odpalać. Nie chcę wyjśc na durnia, ale spróbuj. Jakbyś z kolei dał go do /etc/init.d to musiałbyś zrobić chyba symlinka do /etc/rc.d/rc3.d

Odnośnik do komentarza
Udostępnij na innych stronach

W moim 1-szym poście pisałem, że mam jeszcze dwie inne koncepcje na jego odpalenie. Właśnie jedną z nich jest przekopiowanie skryptu do /bin (a drugą do /etc/init.d ;)). Tylko jestem ciekawy, jakby to zrobić przez ten zakichany alias. Przecież musi się jakoś dać :|

Odnośnik do komentarza
Udostępnij na innych stronach

U mnie jest /etc/bash.bashrc, ale w nim też nie działa. W necie znalazłem skrypt również do wyboru X'sów dla Slacka. I autor zaleca dopisać info do ~/.bashrc → link. Czyli jemu chyba musi chodzić :|

Mnie tam szczerze mówiąc jest wszystko jedno, czy uruchamiam przez alias, czy przez skrypt z /bin, ale chciałbym wiedziec, jak to zrobić (na przyszłość).

A ten plik w /etc może sobie być globalny, ale ważne jest, żeby zaczął 'działac' przed uruchomieniem środowiska graficznego.

Odnośnik do komentarza
Udostępnij na innych stronach

a jak podlinkujesz .bashrc do .bash_login to dziala?

to raczej nie zadziala bo lszk alias wprowadzal do .bash_profile ktore to wykonywane jest pierwsze i przetwarza .bashrc

 

dla mnie bledne jest wykonanie aliasu i powinno byc wyrazone nie przez tylde tylko zmienna systemowa $HOME:

alias startx='$HOME/bash/nazwa'

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety perl, też nie działa :/
a sprawdz czy .bashrc jest u Ciebie w ogole przetwarzany, dodaj tam jakies echo albo cos podobnego

 

A jak dopiszesz do /etc/bashrc ? Wtedy ten alias powinien być globalny, dla wszystkich Możesz jeszcze do /etc/profile, dokładnie nie pamiętam które miejsce było lepciejsze
aliasy, funkcje, znak zachety itp. umieszcza sie w .bashrc lub globalnie dla wszystkich uzytkownikow w /etc/bashrc

w .bash_profile oraz globalnie w /etc/profile umieszczona jest wstepna konfiguracja srodowiska (czyli np. eksporty zmiennych srodowiskowych potrzebne do prawidlowego dzialania itp.)

 

Pod pojedyńczą litere nie sprawdzałem → zrobie z ciekawości, jak stargam do końca film z torrenta.
.bashrc przetwarzany jest za kazdym wywolaniem powloki (czyli po zmianie tego pliku konfiguracyjnego wystarczy zalogowac sie na nowa konsole zeby .bashrc zostal przetworzony), inaczej jest z /etc/bashrc ktore jest uruchamiane/przetwarzane zaraz przy starcie systemu (tzn. przy pierwszym wywolaniu powloki)
Odnośnik do komentarza
Udostępnij na innych stronach

.bashrc przetwarzany jest za kazdym wywolaniem powloki (czyli po zmianie tego pliku konfiguracyjnego wystarczy zalogowac sie na nowa konsole zeby .bashrc zostal przetworzony

Skoro tak, więc

 echo 'echo $USER' > .bashrc

Teraz ctrl+alt+f2, logowanie i nie ma. Jak wpisze su lszk i hasło, to się pokaże wynik $USER.

 

Nie wiem, czy to ma znaczenie, ale domyślnie po zalogowaniu na danego usera wyświetla się zwartosć jakiegoś pliku (skryptu) → data ostatniego logowania, wersja kernela i takie tam. Może poprostu zawartość tego pliku przysłanie te z ~/.bashrc?

Odnośnik do komentarza
Udostępnij na innych stronach

.bashrc przetwarzany jest za kazdym wywolaniem powloki (czyli po zmianie tego pliku konfiguracyjnego wystarczy zalogowac sie na nowa konsole zeby .bashrc zostal przetworzony), inaczej jest z /etc/bashrc ktore jest uruchamiane/przetwarzane zaraz przy starcie systemu (tzn. przy pierwszym wywolaniu powloki)

No ie całkiem:

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior. 

When a login shell exits, bash reads and executes commands from the file ~/.bash_logout, if it exists. 

When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc. 

W fedorowym ~/.bash_profile jest dodatkowo coś takiego:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$HOME/bin:$PATH

export PATH
unset USERNAME

Dopiero wtedy ~/.bashrc jest cztany podczas logowania.

Jak wpisze su lszk

A nie

 su - lszk

?

Odnośnik do komentarza
Udostępnij na innych stronach

W fedorowym ~/.bash_profile jest dodatkowo coś takiego:

No widocznie na Fedorze jest inaczej

cat .bash_profile 
export PATH=$PATH:$HOME/bin

Tak ja mam.

A nie

    
su - lszk

?

Nawet bez myślnika zadziałało, skoro widziałem zawartość $USER, więc widocznie aż tak ważne to nie było ;)

Odnośnik do komentarza
Udostępnij na innych stronach

inaczej jest z /etc/bashrc ktore jest uruchamiane/przetwarzane zaraz przy starcie systemu (tzn. przy pierwszym wywolaniu powloki)

No ie całkiem

faktycznie tutaj sie przejezyczylem, chodzilo mi o /etc/profile (u mnie w przeciwienstwie do informacji z tej strony z manulala, /etc/profile nie uruchamia sie za kazdym wywolaniem basha, tylko raz przy pierwszym wywloaniu dla uzytkownika)

Nawet bez myślnika zadziałało, skoro widziałem zawartość $USER, więc widocznie aż tak ważne to nie było
to troche dziwne bo moim zdaniem przy wywolaniu bez myslnika nie powinno w ogole przetwarzac plikow konfiguracyjnych tylko powloka powinna pracowac na zmiennych srodowiskowych juz zaladowanych
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...