Bourne Again Shell (bash)

Slackware.SE Wiki

Hoppa till: navigering, sök

[redigera] 8.3 The Bourne Again Shell (bash)

8.3.1 Miljövariabler

Ett Linuxsystem är ett komplext odjur och det finns mycket att hålla reda på, mycket smådetaljer som kommer in och styr i din normala interaktion med olika program (några av dem behöver du aldrig hålla koll på). Ingen vill ha en massa val att gå igenom innan varje program startas, såsom att tala om vilken typ av terminal som ska användas, namnet på datorn eller hur prompten ska se ut...

Så som en kopieringsmekanism, användarna kallar det för miljö. Miljön definieras av konditionen i vilket program körs, och somliga av dessa definitioner varierar, användare kan alternera och leka med det, som är dess rättigheter i ett Linux system. Ganska många, ja alla skal har miljövariabler (om inte, så är det nog inget användbart skal!). Här kommer vi att ge en överblick över kommandot bash använder för att manipulera dess miljövariabler.

set bör med sig själv visa dig alla miljövariabler som för närvarande är definierade, liksom deras värden. Som de flesta inbyggda bash kan det göra flera andra saker (med parametrar), men vi lämnar det till mansidan för bash(1) som täcker det. Exempel 8-1 visar ett utdrag från kommandot set som körs på upphovsmannens dator. Notera att i detta exempel PATH variabeln som vi diskuterade tidigare. Program i någon av dessa kataloger kan köras genom att helt enkelt skriva dess filnamn.

Example 8-1. Lista miljövariabler med kommandot set

% set
PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
/usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
/usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
PIPESTATUS=([0]="0")
PPID=4978
PS1='\h:\w\$ '
PS2='> '
PS4='+ '
PWD=/home/logan
QTDIR=/usr/local/lib/qt
REMOTEHOST=ninja.tdn
SHELL=/bin/bash
#
% unset VARIABLE

unset kommer att ta bort alla variabler du ger det, om du tar bort både variablerna och dess värden så kommer bash glömma att den variabeln någonsin har funnits. (men var lugn. Så vida det inte är nåt du uttrycklingen definierat i den skalsessionen, så kommer den att återskapa den i andra sessioner)

% export VARIABLE=some_value

Nu är export verkligen behändigt. Använd det, du ger miljövariabeln "VARIABLE" värdet "som_value", om VARIABLE inte finns, så gör den det nu. Om VARIABLE redan hade ett värde, ja då är det borta. Det är inte så bra, om du bara försökte att lägga till en katalog till din PATH. Isåfall, så behöver du bara göra nåt sånt här:

% export PATH=$PATH:/some/new/directory

Notera att användanet av $PATH där: när du vill att bash tolkar en variabel (byt ut det med detta värde), tråckla in ett $ i början av variabelns namn. Till exempel, echo (skriv ut på skärmen) $PATH kommer att skriva ut värdet av PATH, i mitt fall:

% echo $PATH
/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
/usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
/usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin

8.3.2 Tab komplettering

(Här kommer nåt coolt igen.)

  1. kommandopromptens gränssnitt kräver mycket skrivande.
  2. att skriva är arbetssamt.
  3. Ingen gillar när det är arbetssamt.

Från 3 och 2 kan vi avgöra att (4) ingen gillar att skriva. Turligt nog sparar bash oss ifrån (5) (ingen gillar kommandoprompt gränssnittet).

Hur uppnår bash detta underbara tillägg frågar du då? Som tillägg till jokertecken som vi diskuterade förut, så innehåller bash tab kompltettering.

Tabkomplettering fungerar ungefär så här: Du skriver namnet på en fil. Det kanske finns i din sökväg, eller så kanske du uttryckligen skriver ut det. Allt du behöver göra är att skriva nog av filnamnet för att unikt kunna identifiera det. Sen trycker du på tabtangenten. bash kommer att lista ut vad det är du vill, och skriva det för dig!

Exempel. /usr/src innehåller två underkataloger: /usr/src/linux oxh /usr/src/sendmail. Jag vill se vad som finns i /usr/src/linux. Så jag skriver bara ls /usr/src/l och trycker på TAB tangenten, så kommer bash att ge mig ls/usr/src/linux.

Nu föreställer du dig att det finns två kataloger /usr/src/linux och usr/src/linux-old, om du då skriver /usr/scr/l och trycker TAB, så fyller bash på så mycket den kan, och du kommer att få /usr/linux. Du kan stanna där eller så kan du slå TAB igen så visar bash en lista över kataloger som matchar det jag så långt skrivit in.

Följaktigen mindre skrivning (och mindre gör att folk gillar kommando gränssnittet). Jag sa ju att det var coolt.

Klart, någon skummar igenom va?

--Dartanjang 14 juli 2006 kl.13.11 (CEST)

Personliga verktyg