Sida 1 av 1

Lägga till sökvägar i PATH

Postat: 23 jun 2011, 00:47
av PerJon
Hej!

Är helt nybörjare på Linux och har kommit över en bok som heter "SAMS Teach Yourself Unix in 24 hours". Det går bra och är riktigt kul men har stött på ett problem som jag behöver hjälp med.

Jag sitter och tittar på det här med rättigheter och har kommit till ett avsnitt där det står följande:

"Execute permission is slightly different from either read or write permissions. Any file with execute permissions can be treated like a program. You enter the name of the file on the command line, and if the directory is in your PATH, the file is executed."

nedan följer exempel som jag inte får att fungera.

%pwd
/home/taylor

% echo $PATH
/home/taylor/bin:/bin:/usr/bin;/usr/ucb:/usr/local:/usr/local/bin:
%ls -l bin/say.hi
(rättigheter för filen kommer upp)

%say.hi
hi

Jag står in min hemkatalog och skriver "say.hi" men får "command not found". När jag kollar min PATH verkar jag sakna min hemkatalog (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games), I boken får han fram "/home/taylor/bin". Behöver jag lägga till den? kan jag göra det med följande kommand? $ export PATH=$PATH:/bin:/usr/local/bin

Jag behöver hjälp då nästa övning handlar om att ändra rättigheter på bin/say.hi så jag inte kan köra den och sedan ändra tillbaka rättigheter så det går igen.

Eller har ni förslag på andra sätt jag kan prova det tar jag tacksamt emot det.

Hoppas ni har överseende med min nybörjar nivå.

Tack på förhand

Re: Lägga till sökvägar i PATH

Postat: 23 jun 2011, 09:19
av uppsalanet
Hej,
i din hemkatalog finns filen .profile

Kod: Markera allt

cat .profile
Där finner man:

Kod: Markera allt

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
Vilket säger att om det finns en "bin" katalog i din hemkatalog så ska den adderas till först i variabeln $PATH.

Efter att ha skapat ~/bin (motsvarande $HOME/bin) måste du logga ut och in igen för att den ska adderas till variabeln $PATH.

Kod: Markera allt

chmod +x filename
är kommandot för att göra filen exikverbar.
Annars tycker jag att (4 2 1) är enklare att komma ihåg, men det är en smaksak, kika gärna på denna länk:
http://sv.wikipedia.org/wiki/Chmod

Alternativet till att inte ha den i $PATH är att ange "absolute path" till filen när den ska exikveras ex:

Kod: Markera allt

./filename
Som exikverar filen filname i den katalogen som du står i.

Om filen inte är exikverkar kan du ange:

Kod: Markera allt

sh ./filename
Hälsningar
Fredrik

Re: Lägga till sökvägar i PATH

Postat: 23 jun 2011, 13:43
av PerJon
Hej Fredrik,
Tack för svar!

Jag provade att skapa en bin katalog i min hemkatalog då det inte fanns någon när jag körde ls -a. Jag skrev in koden i terminal fönstret "if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi"

och loggade ut.

Om jag nu skriver $PATH har min hemkatalog kommit med i PATH men har ett felmeddelande på slutet "bash: /home/per/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games: No such file or directory". Vad är det för fil eller mapp den försöker hitta? Skriver jag echo $PATH ser allt bra ut, min hemkatalog ligger med och inget flemeddelande på slutet.

När jag först skriver say.hi får jag tillbaka permission denied men sedan så andvänder jag chmod med +x och då fungerar det, får dock bara en ny rad där den ställer sig i min hemkatalog igen. Poletten med hur man sätter rättigheter har trillat ner tror jag, stort tack!.

behöver jag göra något åt min $PATH när jag enbart skriver $PATH så jag får bort "No such file or directory"? Det ser rätt ut när jag skriver echo $PATH

Har du något annat tips på en fil jag kan skapa som retunerar något i terminal fönstret så jag kan prova att lägga till rättigheter och sedan plocka bort dem igen så jag ser att det verkligen fungerar. Jag lyckades inte med det här say.hi exemplet som finns i boken då den bara hoppar till en ny rad.

Tack igen

Re: Lägga till sökvägar i PATH

Postat: 23 jun 2011, 17:42
av Bowmore
Det enda du behöver göra är att skapa en mapp /home/taylor/bin. Just för den mappen (bin) så finns det redan en inbyggd mekanism som gör att den mappen läggs till som genväg i miljövariablen PATH om den mappen existerar. Sen kan du under mappen /home/taylor/bin lägga dina program (binärer) och sen köra dessa som kommandon utan att behöva ange genväg om de är körbara (flaggan x satt).

Att du får en felutskrift när du skriver enbart $PATH i terminalen beror på att $PATH då tolkas som ett kommando vilket det ju inte är. Så felutskriften i det fallet är helt riktig.

EDIT
Här ett enkelt exempel som du efterlyste..

1) Skapa en fil i din bin-mapp och döp den till hi
2) Lägg sen in de här raderna i den filen och gör filen körbar.

Kod: Markera allt

#/bin/bash
echo "Hi there!"
3) Kör kommandot hi

Re: Lägga till sökvägar i PATH

Postat: 23 jun 2011, 21:24
av PerJon
Kan bara säga stort tack för hjälpen. Ditt exempel fungerar klockrent och jag har provat att ändra rättigheter med chmod och även fått svar på min fråga om $PATH

Tack även till uppsalanet.

Det är så roligt med Linux ;D