Bash - operators og enviroment variables

Tags:    bash linux script shellscript

Hej alle! Synes selv jeg har været rimeligt meget rundt og læse om miljøvariabler, men forstår det stadig ikke helt.. - Det er nogle variabler som din shell bruger.. Til?

Er heller ikke så skart på operatorer i bash. Er der en liste et eller andet sted? F. eks operatoren ":" i:
Fold kodeboks ind/udKode 


Hvad gør ":" der? Går ud fra den "adder"? Der er vel en masse operatorer som gør livet meget nemmere som shellscripter?



4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Miljøvariable kan ændre opførslen for både bash (din shell) og et hvilket som helst andet program. Det er input til programmet på samme niveau som argumenter, læsning fra standard in, filer, netværks traffik, osv., og der er mange af dem. Skriv 'set' i din shell for at liste dem, som er sat pt.

PATH er én af disse. Den indeholder stierne til de steder, hvor din shell skal lede efter programmer, hvis ikke du specificerer en fuld eller absolut sti selv.

Hvis du starter et program sådan her: '/bin/find', så er det en fuld sti. Gør du sådan her: '../../bin/find', så er det en relativ sti, men gør du sådan her: 'find', så er der ingen sti, og så leder shellen i stierne specificeret i PATH.

Min PATH ser sådan her ud: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

Dvs. at hvis jeg kører 'find' programmet, så vil bash først se om det ligger i '/usr/local/sbin'. Gør det ikke det, kigges der i '/usr/local/bin'. Er det ikke der fortsættes der til '/usr/sbin', og så videre. Bliver det ikke fundet i stierne specificeret i PATH, så giver bash en fejl.

':' er ikke en operator. Bash bruger ':' til at separere stier i PATH variablen. Så ':' har ikke en speciel betydning helt generelt, men lige i tilfældet med PATH er det en separator.

Du kan læse noget nær alt om Bash ved at skrive 'man bash'...men det er noget tørt læsestof :-)



Bash funktioner skrives som:
Fold kodeboks ind/udKode 


De kan også eksporteres til din shell, og så bliver de vist med 'set':

Fold kodeboks ind/udKode 




Miljøvariable kan ændre opførslen for både bash (din shell) og et hvilket som helst andet program. Det er input til programmet på samme niveau som argumenter, læsning fra standard in, filer, netværks traffik, osv., og der er mange af dem. Skriv 'set' i din shell for at liste dem, som er sat pt.

PATH er én af disse. Den indeholder stierne til de steder, hvor din shell skal lede efter programmer, hvis ikke du specificerer en fuld eller absolut sti selv.

Hvis du starter et program sådan her: '/bin/find', så er det en fuld sti. Gør du sådan her: '../../bin/find', så er det en relativ sti, men gør du sådan her: 'find', så er der ingen sti, og så leder shellen i stierne specificeret i PATH.

Min PATH ser sådan her ud: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

Dvs. at hvis jeg kører 'find' programmet, så vil bash først se om det ligger i '/usr/local/sbin'. Gør det ikke det, kigges der i '/usr/local/bin'. Er det ikke der fortsættes der til '/usr/sbin', og så videre. Bliver det ikke fundet i stierne specificeret i PATH, så giver bash en fejl.

':' er ikke en operator. Bash bruger ':' til at separere stier i PATH variablen. Så ':' har ikke en speciel betydning helt generelt, men lige i tilfældet med PATH er det en separator.

Du kan læse noget nær alt om Bash ved at skrive 'man bash'...men det er noget tørt læsestof :-)


Det satte en del ting på plads, mange tak! Når jeg bruger kommandoen "set" så får jeg bare en del kode af se, allesammen noget der ligner funktioner - lige på nær at der ikke står function foran? o.o
Fold kodeboks ind/udKode 

Og hvad er "()" i slutningen af functions headeren? Er det til argumenter/parametre? Troede ikke man lavede parametere sådan i bash?



Bash funktioner skrives som:
Fold kodeboks ind/udKode 


De kan også eksporteres til din shell, og så bliver de vist med 'set':

Fold kodeboks ind/udKode 


Hmm, har aldrig skrevet "()" ud for mine funktioner og de virkede fint. Men det andet ser trods alt pænest ud, så det må jeg hellere begynde på :P



t