Gå til innhold

$PATH og andre linuxspm...


Anbefalte innlegg

Noen (enkle?) spørsmål om Linux

 

Hvordan legger jeg til en path i $PATH variabelen? Drittlei å taste en ti meter lang remse hver gang jeg skal kjøre javac og java... :roll:

 

Hva er /usr/local til? er dette omtrent det samme som C:programmfiler ?

 

Hvordan setter jeg opp WINE så jeg kan spille CS?

 

Kjører RedHat 9

 

ENDRET: fjernet enkle i Tema-feltet...

Lenke til kommentar
Videoannonse
Annonse
Hvordan legger jeg til en path i $PATH variabelen? Drittlei å taste en ti meter lang remse hver gang jeg skal kjøre javac og java... :roll:

Hvis du skal endre PATH for hele systemet kan du redigere /etc/profile, men hvis det bare er til én bruker kan du legge det inn i .bashrc i hjemmeområdet til brukeren.

 

Noe ala:

 

export PATH=$PATH:/katalog/til/java/bin

Hva er /usr/local til? er dette omtrent det samme som C:programmfiler ?

Jeg bruker ihvertfall /usr/local til "fremmede" programmer, altså programmer som ikke følger med distroen eller er tilgjengelig i distroens pakkeformat (rpm/deb). Som oftest vil det si programmer jeg selv kompilerer, og jeg syns derfor det blir ryddigere å legge de på et eget sted. Egentlig bare en smakssak :)

Lenke til kommentar

Hyggelig at du tar deg tid til å hjelpe :)

Er ikke helt kjent med Bash-scripts ennå, så...

 

1. fi = end if ?

2. pathmunge - hva er det????

3. satt et "lite" merke. Er det her jeg skal redigere?

4. skal jeg her skrive

pathmunge /den-lange-drittale-banen-min/ 

etter de andre pathmungene?

5. er dette et script som kjøres automatisk ved boot?

6. burde java compileren altså ligge i /usr/local/java/bin/, og det egentlig dermed burde stå

pathmunge /usr/local/java/bin/ 

(sette InstallShielden til å instalere i /usr/local)

7. har /usr/local noe med pålogget bruker å gjøre? Eller er det en generell "programmer" mappe?

8. hva er de andre mappene i /usr til?

9. /etc ?

 


# /etc/profile



# System wide environment and startup programs, for login setup

# Functions and aliases go in /etc/bashrc



pathmunge () {

if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)"; then

   if [ "$2" = "after" ]; then

      PATH=$PATH:$1

   else

      PATH=$1:$PATH

   fi

fi

}



# Path manipulation !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!MERKET!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

if [ `id -u` = 0 ]; then

pathmunge /sbin

pathmunge /usr/sbin

pathmunge /usr/local/sbin

fi



pathmunge /usr/X11R6/bin after



unset pathmunge



# No core files by default

ulimit -S -c 0 > /dev/null 2>&1



USER="`id -un`"

LOGNAME=$USER

MAIL="/var/spool/mail/$USER"



HOSTNAME=`/bin/hostname`

HISTSIZE=1000



if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then

   INPUTRC=/etc/inputrc

fi



export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC



for i in /etc/profile.d/*.sh; do

   if [ -r "$i" ]; then

   	. $i

   fi

done



unset i

 

hilsen Linux-nybegynner :)

Lenke til kommentar

pathmunge() er bare en funksjon som er definert i begynnelsen av fila - dette er tydeligvis noe distro-makerne har funnet på (hvilklen distro kjører du forresten?). Den slenger på en ny entry i PATH'en foran eller bak de eksisterende. Det skulle gå fint å gjøre som du hadde merket av.

 

De forskjllige mappene under /usr er til forskjellige deler av programmene. F.eks ligger selve programfiler i 'bin' mens tilhørende dokumentasjon ligger i 'doc', 'man' og 'info' osv.

 

I /usr/local ligger tilsynelatende en kopi av /usr med mange av de samme underkatalogene. Men som jeg skrev over brukes denne ofte til tileggsprogrammer som ikke følger med distroen, f.eks programmer som kompileres fra kildekode o.l.

Lenke til kommentar

Funket ikke å endre /etc/profile, dvs, funket for root, men ikke den vanelige brukeren min...

Her ser du den nye fila:

 


# /etc/profile



# System wide environment and startup programs, for login setup

# Functions and aliases go in /etc/bashrc



pathmunge () {

if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)"; then

   if [ "$2" = "after" ]; then

      PATH=$PATH:$1

   else

      PATH=$1:$PATH

   fi

fi

}



# Path manipulation

if [ `id -u` = 0 ]; then

pathmunge /sbin

pathmunge /usr/sbin

pathmunge /usr/local/sbin

# Extra system-wide paths

pathmunge /usr/local/s1studio_jdk/j2sdk1.4.1_02/bin

pathmunge /usr/local/ActiveTcl/bin

fi



pathmunge /usr/X11R6/bin after



unset pathmunge



# No core files by default

ulimit -S -c 0 > /dev/null 2>&1



USER="`id -un`"

LOGNAME=$USER

MAIL="/var/spool/mail/$USER"



HOSTNAME=`/bin/hostname`

HISTSIZE=1000



if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then

   INPUTRC=/etc/inputrc

fi



export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC



for i in /etc/profile.d/*.sh; do

   if [ -r "$i" ]; then

   	. $i

   fi

done



unset i

 

Merk at jeg også har lagt til en path for ActiveTcl. Noen som vet hvordan jeg avinstalerer den Tcl greia som fulgte med RH 9? Er litt buggy, får AMSN til å bruke 150 MB minne osv...

Lenke til kommentar

Hva er /usr/local til? er dette omtrent det samme som C:programmfiler ?

usr/local er historisk sett der hvor alle klientspesifikke programmer ligger, som attpåtil skal være tilgjengelig for flere brukere innenfor samme nettverk. /usr/local er egentlig motsetningen til /usr/share, hvorav i den siste så kreves det at filene kan leses/kjøres/formateres på alle maskinvareplattformer (så sant det er en UNIX-variant). For "vanlige" brukere går det egentlig ut på ett hvor man installerer programmene, men /usr/local er et fint sted å legge dem hvis man vil følge "reglene" ;-)

Lenke til kommentar
Funket ikke å endre /etc/profile, dvs, funket for root, men ikke den vanelige brukeren min...

Sett opp path'en i .bashrc på hjemmeområdet til brukeren isteden.

Merk at jeg også har lagt til en path for ActiveTcl. Noen som vet hvordan jeg avinstalerer den Tcl greia som fulgte med RH 9? Er litt buggy, får AMSN til å bruke 150 MB minne osv...

Har ikke RH9 men den har sikkert et fancy grafisk pakkeprogram.

 

Eller gjør det på gamlemåten:

 

1.) Finn navnet på pakken: rpm -qa | grep 'tcl'

 

2.) Fjern pakken: rpm -e pakkenavn

Lenke til kommentar

Vel...

 


[kyrre@localhost kyrre]$ rpm -e tcl-8.3.5-88

error: Failed dependencies:

       libtcl8.3.so is needed by (installed) tuxracer-0.61-19

       libtcl8.3.so is needed by (installed) tk-8.3.5-88

       tcl is needed by (installed) tk-8.3.5-88

 

Hvordan søren forteller jeg den at de skal bruke ActiveTcl (inneholder tk), som ligger i:

/usr/local/ActiveTcl/bin

 

Prøvde å ta rpm -qa | grep 'wish' :oops:

 

Forsåvidt litt rart at /etc/profile ikke virker på "hverdagsbrukeren" min:

 


[kyrre@localhost kyrre]$ $PATH

bash: /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/kyrre/bin: No such file

or directory

 

Root har fått med seg endringene, og har sef. med seg eks. /sbin ol.

 

Bruker kyrre's .bashrc:


# .bashrc



# User specific aliases and functions



# Source global definitions

if [ -f /etc/bashrc ]; then

. /etc/bashrc

fi

 

root's bashrc


# .bashrc



# User specific aliases and functions



alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'



# Source global definitions

if [ -f /etc/bashrc ]; then

. /etc/bashrc

fi

 

BTW hvordan legger man til nye brukere?

 

Og ja, RH 9 har en fancy packetmanager, dvs. ikke søkbar. Delt inn i et tre, og sortert etter kategori. Fint SUPPLEMENT til en søkbar liste á la Mandrake 9.0. Men Mandrake 9 er "litt" rotete under X da...

 

BTW2: Likte den linken fra Marcel SB:

http://linux-newbie.sunsite.dk/

 

litt drøyt at de kommer inn på asembly i en newbee guide, da...

Lenke til kommentar
Funket ikke å endre /etc/profile, dvs, funket for root, men ikke den vanelige brukeren min...

Her ser du den nye fila:

 




# Path manipulation

if [ `id -u` = 0 ]; then

pathmunge /sbin

pathmunge /usr/sbin

pathmunge /usr/local/sbin

# Extra system-wide paths

pathmunge /usr/local/s1studio_jdk/j2sdk1.4.1_02/bin

pathmunge /usr/local/ActiveTcl/bin

fi

 

if [ `id -u` = 0 ]; 

sjekker om bruker er root. du kan hive pathmunge kommandoen utfor denne if blokken, da gjelder det for alle brukere!

Lenke til kommentar

Det ble litt rotete. Slik kan det se ut (hvis j2sdk og tcl greiene skal i path):

 


# Path manipulation 

if [ `id -u` = 0 ]; then 

  pathmunge /sbin 

  pathmunge /usr/sbin 

  pathmunge /usr/local/sbin 

# Extra system-wide paths 

fi 



pathmunge /usr/local/s1studio_jdk/j2sdk1.4.1_02/bin 

pathmunge /usr/local/ActiveTcl/bin 

pathmunge /usr/X11R6/bin after 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...