Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost] Bash tijdens opstarten  (gelezen 830 keer)

Offline Ron

  • Forumteam
    • r0n
    • Over Tholen
[Opgelost] Bash tijdens opstarten
« Gepost op: 2012/01/08, 12:05:51 »
Wanneer mijn PC opstart, dan wil ik een aantal dingen laten uitvoeren.
Tot nu deed ik dat door bij het automatisch starten b.v. een regel als sh /home/ron/file.sh in te voeren.
Wanneer je een file uitvoerbaar maakt en laat beginnen met #!/bin/bash dan kan je de file ook opstarten als een commando (zou je denken).
Dit gaat alleen, wanneer de file in het path staat.
Oplossing 1 is, door het commando in te voeren als ./file.sh, maar dat kan niet tijdens opstarten.
Oplossing 2 is, de huidige map toevoegen aan het path, met cd /home/ron/bash en export PATH=$PATH:.
Oplossing 3 is, de huidige map aan het path toevoegen, met export PATH=$PATH:/home/ron/bash
Alle 3 deze oplossingen werken echter niet, wanneer ze automatisch opgestart worden, ik maak dus een (denk) fout.
Mijn vraag: waar ga ik de mist in ?   ???
« Laatst bewerkt op: 2012/01/08, 15:27:30 door Ron »
Openstandaard Evangelist, OpenSource Promotor, OpenData voorstander.
Xubuntu gebruiker en voorstander
Er is ook nog een andere hobby.

Re: Bash tijdens opstarten
« Reactie #1 Gepost op: 2012/01/08, 12:47:40 »
Ik begrijp niet helemaal wat je bedoelt met "door bij het automatisch starten b.v. een regel als sh /home/ron/file.sh in te voeren".

De oplossing ./script.sh wordt gebruikt, als je een bestand in de huidige map wilt uitvoeren. De  ./ is nodig omdat vaak de huidige map niet in path staat. Je zou de . ook kunnen vervangen door het absolute path (e.g. /home/foo/bar/script.sh).
Oplossing 2 en 3 hetzelfde, maar een iets andere syntax. Wanneer je dit in een terminal typt, wordt het path alleen voor de huidige sessie veranderd. Meestal gooi je dit soort dingen in ~/.bash_profile of ~/.bashrc. De eerste wordt gelezen, wanneer je een login shell opent, de tweede wanneer een interactieve shell geopend wordt, waar geen login aan te pas komt. In beide gevallen komt de path verandering te laat, als ik je goed begrijp.

Ik gebruik zelf geen displaymanager en gebruik .xinitrc om wat dingetjes te draaien als ik m'n WM start. Je kunt ook dingen starten vanuit /etc/rc.local of door scripts in /etc/profile.d/ te gooien, deze worden dan uitgevoerd als je inlogt.

Offline Ron

  • Forumteam
    • r0n
    • Over Tholen
Re: Bash tijdens opstarten
« Reactie #2 Gepost op: 2012/01/08, 13:04:19 »
Wanneer je dit in een terminal typt, wordt het path alleen voor de huidige sessie veranderd.
Dat is dus het probleem !
Bij het auto-starten wordt een sessie gemaakt en gelijk afgesloten, een vervolg opdracht kent dus het path niet.
Bedankt voor de uitleg, ik ben weer heel wat wijzer geworden.

Hier gebruik ik XFCE, eigenlijk een gesloopte Xubuntu versie, met diverse toevoegingen.
Openstandaard Evangelist, OpenSource Promotor, OpenData voorstander.
Xubuntu gebruiker en voorstander
Er is ook nog een andere hobby.

Re: Bash tijdens opstarten
« Reactie #3 Gepost op: 2012/01/08, 14:53:22 »
Ron,

Als ik het goed heb is de map /home/<user>/bin al opgenomen in het PATH -> echo $PATH.
~/.bashrc wordt volgens mij ook uitgevoerd tijdens het inloggen.

In ~/.config/autostart kan volgens mij alleen desktop-bestanden.
Maw, je zal voor elk script een desktop-bestand moetn aanmaken en als niet vergeten dat het om een terminal-applicatie gaat.

Als je mc (MidnightCommander) installeer, heb je een goed voorbeeld hiervan: /usr/share/applications/mc.desktop
« Laatst bewerkt op: 2012/01/08, 14:57:44 door MauRice2 »
MvG,
MauRice
Registered Linux user: 473556

Re: Bash tijdens opstarten
« Reactie #4 Gepost op: 2012/01/08, 14:57:00 »
Oeps
MvG,
MauRice
Registered Linux user: 473556

Offline Ron

  • Forumteam
    • r0n
    • Over Tholen
Re: Bash tijdens opstarten
« Reactie #5 Gepost op: 2012/01/08, 14:58:19 »
Als ik het goed heb is de map /home/<user>/bin al opgenomen in het PATH
Helaas alleen
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Dus toch een volle regel opgeven ........
Openstandaard Evangelist, OpenSource Promotor, OpenData voorstander.
Xubuntu gebruiker en voorstander
Er is ook nog een andere hobby.

Re: Bash tijdens opstarten
« Reactie #6 Gepost op: 2012/01/08, 15:05:39 »
Als ik het goed heb is de map /home/<user>/bin al opgenomen in het PATH
Helaas alleen
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Dus toch een volle regel opgeven ........
Ron,

De map /home/<user>/bin moet wel aanwezig zijn..
Uittreksel uit ~/.profile:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Anders is dat Xubuntu weer anders dan Ubuntu.
Even ~/.profile aanpassen.
MvG,
MauRice
Registered Linux user: 473556

Offline Ron

  • Forumteam
    • r0n
    • Over Tholen
Re: Bash tijdens opstarten
« Reactie #7 Gepost op: 2012/01/08, 15:14:12 »
YES !!
/home/ron/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Nu testen of het werkt ........

Edit:
Nu is het mogelijk om een bash file als een commando te starten.
Helaas niet bij auto-start, daar werkt alleen de opdracht sh /home/ron/bin/<file>, maar dat is gelukkig maar éénmaal invoeren.
Je hebt me [a] geholpen om mijn systeem (nog) mooier te maken en wat geleerd !!

Mijn dank is enorm  O0
« Laatst bewerkt op: 2012/01/08, 15:26:35 door Ron »
Openstandaard Evangelist, OpenSource Promotor, OpenData voorstander.
Xubuntu gebruiker en voorstander
Er is ook nog een andere hobby.

Re: Bash tijdens opstarten
« Reactie #8 Gepost op: 2012/01/08, 15:25:40 »
~/.bashrc wordt volgens mij ook uitgevoerd tijdens het inloggen.

Uit de bash man pagina

Citaat
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.
...
When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.

Ik heb hier in het verleden wel eens problemen mee gehad. Ik kon indertijd wel LaTeX oproepen vanuit Vim, maar niet vanuit gVim. Ik had het path in ~/.bashrc had aangepast ipv ~/.bash_profile, welke wel werd gelezen als ik vanuit een terminal Vim opende, maar niet als ik gvim opende via een menu of sneltoets.


Offline Ron

  • Forumteam
    • r0n
    • Over Tholen
Re: [Opgelost] Bash tijdens opstarten
« Reactie #9 Gepost op: 2012/01/08, 15:28:33 »
Wat een geweldig forum, mijn vraag is volledig opgelost en ik heb wat geleerd !
Het onderwerp als opgelost gezet.
Openstandaard Evangelist, OpenSource Promotor, OpenData voorstander.
Xubuntu gebruiker en voorstander
Er is ook nog een andere hobby.