Superuser

Autor Thema: PATH setzen, die 2.  (Gelesen 6943 mal)

DeraZZ

  • Gast
PATH setzen, die 2.
« am: 06. Februar 2006, 00:46:50 »
Hallo, liebe Sonnenanbeter!

In einem frueheren Thread ( http://www.sonnenblen.de/index.php/topic,2536.0.html ) konnte ich erfahren, wie
die PATH-Variable um weitere Pfade ergaenzt wird. Das klappt soweit auch prima. Ferner hiess es, wenn der
Pfad in die /etc/profile eingetragen wird, bleibt sie beim naechsten Systemstart erhalten (systemweit). Jetzt frage
ich mich, WO innerhalb der /etc/profile ich denn den Pfad reinschreiben soll. Meine /etc/profile sieht so aus:
(nicht *punkt*profile, denn die gibt's bei mir nirgendwo)

     ***********************************************************************************************
01 *           #ident   "@(#)profile   1.19   01/03/13 SMI"   /* SVr4.0 1.3   */
02 *
03 *           # The profile that all logins get before using their own .profile.
04 *
05 *          trap ""  2 3
06 *           export LOGNAME PATH
07 *
08 *           if [ "$TERM" = "" ]
09 *           then
10 *              if /bin/i386
11 *              then
12 *                 TERM=sun-color
13 *              else
14 *                 TERM=sun
15 *              fi
16 *              export TERM
17 *           fi
18 *
19 *           #   Login and -su shells get /etc/profile services.
20 *           #   -rsh is given its environment in its .profile.
21 *
22 *           case "$0" in
23 *           -sh | -ksh | -jsh | -bash)
24 *
25 *              if [ ! -f .hushlogin ]
26 *              then
27 *                 /usr/sbin/quota
28 *                 #   Allow the user to break the Message-Of-The-Day only.
29 *       trap "trap '' 2"  2
30 *       /bin/cat -s /etc/motd
31 *       trap "" 2
32 *
33 *       /bin/mail -E
34 *       case $? in
35 *       0)
36 *          echo "You have new mail."
37 *            ;;
38 *       2)
39 *          echo "You have mail."
40 *             ;;
41 *       esac
42 *    fi
43 * esac
44 *
45 * umask 022
46 * trap  2  3
     ************************************************************************************************
(Die Zeilennummern und die Sternchen sind von mir   ;D   )
Kann mir also jmd. sagen, in welcher der obigen Zeilen ich den Pfad eintragen soll?
Etwa in Zeile 06, gleich hinter PATH? So etwa:  export LOGNAME PATH=/userpfad1/userpfad2/userpfad3 ?

Weiterhin interessiert mich, wo denn der Standard-Pfad ausgelesen wird, wenn ich den Befehl printenv auf der
Konsole aufrufe? Aus irgeneiner Datei muss dieser Pfad ja stammen,oder? Ich persoenlich wuerde den Pfad in
genau dieser (fuer mich unauffindbaren Datei) eintragen wollen...
Achso, Solaris 9 hab ich hier.

THX und Gruesse,
Andreas (DeraZZ)

sonnenblen.de - Das unabhängige Sun User Forum

PATH setzen, die 2.
« am: 06. Februar 2006, 00:46:50 »

Offline DukeNuke2

  • Sobl Guru
  • *****
  • Beiträge: 571
  • Soulman
    • Wo die Sonne lacht
Re: PATH setzen, die 2.
« Antwort #1 am: 06. Februar 2006, 12:00:44 »
der standard path wird in der /etc/profile gesetzt. wenn du am pfad was ändern willst, dann am besten in deiner .profile oder der .profile von root, je nach dem worum es geht. einzustellen am besten so:

PATH=$PATH:/dein/zusätzlicher/pfad
export PATH

hth

DeraZZ

  • Gast
Re: PATH setzen, die 2.
« Antwort #2 am: 06. Februar 2006, 12:57:41 »
der standard path wird in der /etc/profile gesetzt. wenn du am pfad was ändern willst, dann am besten in deiner .profile oder der .profile von root, je nach dem worum es geht. einzustellen am besten so:

PATH=$PATH:/dein/zusätzlicher/pfad
export PATH

hth

Hi DukeNuke2,
ich möchte Dir ja nicht zu nahe treten, aber wenn Du mein posting aufmerksam gelesen hättest, hättest Du bemerkt,
daß ich all das bereits weiß.  ;)
Wenn man das so, wie von Dir beschrieben macht, dann ist der zusätzlich angehängte Pfad nach dem nächsten System-
start wieder futsch. Grade deshalb habe ich ja meine /etc/profile mit Zeilennummern gepostet, damit mir jemand sagen
kann, WO innerhalb dieser /etc/profile ich meinen zusätzlichen Pfad reinschreiben soll, DAMIT er erhalten bleibt, und zwar
über einen Neustart hinweg.

Grüße,
Andreas

Luca_

  • Gast
Re: PATH setzen, die 2.
« Antwort #3 am: 06. Februar 2006, 13:17:06 »
er wird aber erhalten, wenn du dies so reinschreibst, wie es dukenuke 2 gepostet hat ;)

wenn du dies schliesslich in die .profile im homedir rein schreibst, ist das file ja auf der harddisk gespeichert und wird bei jedem neuen login neu abgearbeitet und somit die PATH var neu definiert.
dies kannst du natürlich auch in der /etc/profile ändern.. macht man normalerweise nicht aber warum nicht?
und zwar würde ich dies nähe der zeile 4 machen, denn auf zeile 6 wird PATH exportiert, also nim die konfiguration irgendwo davor vor.

Offline DukeNuke2

  • Sobl Guru
  • *****
  • Beiträge: 571
  • Soulman
    • Wo die Sonne lacht
Re: PATH setzen, die 2.
« Antwort #4 am: 06. Februar 2006, 13:19:18 »
er wird aber erhalten, wenn du dies so reinschreibst, wie es dukenuke 2 gepostet hat ;)

wenn du dies schliesslich in die .profile im homedir rein schreibst, ist das file ja auf der harddisk gespeichert und wird bei jedem neuen login neu abgearbeitet und somit die PATH var neu definiert.
dies kannst du natürlich auch in der /etc/profile ändern.. macht man normalerweise nicht aber warum nicht?
und zwar würde ich dies nähe der zeile 4 machen, denn auf zeile 6 wird PATH exportiert, also nim die konfiguration irgendwo davor vor.
agree ;)

DeraZZ

  • Gast
Re: PATH setzen, die 2.
« Antwort #5 am: 06. Februar 2006, 15:51:24 »
Tja, schon eigenartig, das...

Habe, bevor ich anfing zu posten, das genauso durchexerziert, wie DukeNuke2
das auch beschrieben hat (als root). Danach gebootet und siehe da: zusätzlicher
Pfad futsch. Habe dann verzweifelt die (punkt)profile von user root gesucht, fehl-
anzeige. Ein normaler user hat diese (punkt)profile in seinem homefolder, soweit gut.

Warum hat root keine (punkt)profile? genügt es, die (punkt)profile eines normal-users
ins home-verzeichnis von root zu kopieren, die Rechte anzupassen und gut? Eigentlich
sollte die Datei bei der Systeminstallation mit angelegt worden sein, oder? Beim Anlegen
eines normal-user-accounts wird die doch auch gleich mit angelegt.
Wo holt sich das System denn den Inhalt für die PATH-variable her? Jedenfalls nicht aus
der /etc/profile, denn da steht sie nicht drin. Ich kann sie darin jedenfalls nicht erkennen
(siehe erstes posting). Ist der Inhalt für die PATH-variable etwa im kernel verankert?
Dann könnt ich lange in irgendwelchen Dateien danach suchen...

Auf jeden Fall werd ich den Pfad mal in die /etc/profie schreiben und sehn, was passiert.
Sollte das ganze eigentlich im single-user-modus gemacht werden? (--> boot -s)
Oder ist das nicht notwendig?

Andreas

7ami7

  • Gast
Re: PATH setzen, die 2.
« Antwort #6 am: 06. Februar 2006, 16:06:56 »
Für root gilt die /etc/profile die nach jedem login eingelesen wird.
Hast du vielleicht .kshrc oder .bashrc dateien in deienem Homefolder?

Gruss
ami

Luca_

  • Gast
Re: PATH setzen, die 2.
« Antwort #7 am: 06. Februar 2006, 16:26:11 »
ja wenn die dot.profile nicht existiert einfach eine erstellen, macht ja nix?

/.profile

meine sieht so aus:
if [ "/bin/bash" = $SHELL ]; then
        # If running interactively, then:
        if [ "$PS1" ]; then

                # set a fancy prompt
                PS1='\u@\h:\w\$ '

                # If using xterm some info in the titlebar is nice
                case $TERM in
                        xterm*)
                                PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
                                ;;
                        *)
                                ;;
                esac
        fi
fi

# Solaris doesn't know about some terminals
#if [ "$TERM" = "xterm-color" ] ; then export TERM="xterm"; fi
if [ "$TERM" = "xterm" ] ; then export TERM="dtterm"; fi
if [ "$TERM" = "xterm-color" ] ; then export TERM="dtterm"; fi
if [ "$TERM" = "linux" ] ; then export TERM="vt100"; fi
if [ "$TERM" = "linux-lat" ] ; then export TERM="vt100"; fi

alias ll='ls -al'

PATH="$PATH:/opt/csw/bin:/opt/csw/sbin:/usr/sfw/bin:/usr/sfw/sbin"
EDITOR=vi

export PATH EDITOR
damit wird nicht nur die PATH var verändert, sondern auch EDITOR und TERM. und es wird ein "schöneres" PS1 generiert. dann hast du eine "user@host" konsole, und nicht "#" oder "bash-x.x"

hth

edit: ach ja, evtl ein which bash machen und den pfad auf der ersten zeile bei der if abfrage anpassen, wenn der nicht stimmt geht sonst nix =)
« Letzte Änderung: 06. Februar 2006, 16:28:15 von Luca_ »

weilander

  • Gast
Re: PATH setzen, die 2.
« Antwort #8 am: 06. Februar 2006, 16:40:46 »
Unter welcher Solarisversion arbeitest Du?

Sieh Dir mal zusätzlich die '/etc/default/login' und '/etc/default/su' an und entferne notfalls hier die # bei den Pfadanweisungen für root und user. Da kannst Du dann den Pfad auch nach Deinen Wünsche erweitern. Mir scheint, bei Dir wird die .profile beim Systemstart garnicht ausgewertet.

DeraZZ

  • Gast
Re: PATH setzen, die 2.
« Antwort #9 am: 06. Februar 2006, 19:00:05 »
Resümiere:
Wenn ich mit 'PATH=$PATH:/pfad' einen zusätzlichen Pfad dranhänge, ihn dann mit 'export PATH' exportier,
kann ich den mit 'echo $PATH' anzeigen. Und auch benutzen. Boote ich dann meine Kiste neu, ist der
zusätzliche PATH weg. Das habe ich eben nochmal probiert, ist so. Ich muß den zusätzlichen Pfad also
irgendwo hinterlegen, entweder in /etc/profile oder in homedir/(punkt)profile, und diese ist für root bei mir
nicht vorhanden. Daher kam meine Frage, wo in der /etc/profile ich den zusätzlichen Pfad hinschreiben soll.
Hier sind zwischen uns vielleicht Mißverständnisse aufgekommen.
 
@7ami7:  Da ist weder 'ne (punkt)kshrc, noch 'ne (punkt)bashrc im homedir
                 von root. Im homdir von meinem standard-account ist auch nur
                 'ne (punkt)profile, weiter nix.

@luca_: Werde Deine (punkt)profile mal einbauen, meinen Pfad dazuschreiben
              und dann werde ich sehn, ob's "besser" ist, danke schonmal!

@weilander: Habe Solaris 9 laufen. In den Dateien /etc/default/login und
                    /etc/default/su sind die PATH und SUPATH-einträge auskommentiert.
                    Im homedir meines Normal-user-accounts ist 'ne (punkt)profile, die
                    sicher auch ausgewertet wird. Die werde ich dann auch anpassen, falls
                    notwendig, Ich möchte den Pfad allerdings Systemweit haben.
                   
Gruß Euch allen,
Andreas


sonnenblen.de - Das unabhängige Sun User Forum

Re: PATH setzen, die 2.
« Antwort #9 am: 06. Februar 2006, 19:00:05 »

weilander

  • Gast
Re: PATH setzen, die 2.
« Antwort #10 am: 07. Februar 2006, 12:49:59 »
Wenn ich mit 'PATH=$PATH:/pfad' einen zusätzlichen Pfad dranhänge, ihn dann mit 'export PATH' exportier,
kann ich den mit 'echo $PATH' anzeigen. Und auch benutzen. Boote ich dann meine Kiste neu, ist der
zusätzliche PATH weg.
Ist auch logisch, da Du nur das Enviroment der laufenden Shell veränderst. Wenn Du die beendest, sind alle nichtgespeicherten Änderungen weg. Rebooten brauchst Du übrigends nicht. Ein- und Ausloggen reichen. Für die Bash oder Borneshell wird im Übrigen meines Wissens die (punkt)login im Homerverzeichnis des Users einmal beim Einloggen ausgewertet und die (punkt)profile beim Aufrufen jeder neuen Shell (wenn Du z.B ein neues xterm auf der Oberfläche öffnest).
Ein neues Xterm sollte also reichen, um den geänderten Pfad in (punkt)profile zu überprüfen.
Habe Solaris 9 laufen. In den Dateien /etc/default/login und
                    /etc/default/su sind die PATH und SUPATH-einträge auskommentiert.
                    Im homedir meines Normal-user-accounts ist 'ne (punkt)profile, die
                    sicher auch ausgewertet wird. Die werde ich dann auch anpassen, falls
                    notwendig, Ich möchte den Pfad allerdings Systemweit haben.
Dann bist Du bei '/etc/default/login' und '/etc/default/su' eigentlich richtig (für sh und bash). Alles, was Du in deinem Homeverzeichnis anstellst, wirkt sich auch nur auf Deinen Account aus. Du solltest aber dabei darauf achten, daß in beiden Dateien jewals die gleiche Pfadanweisung steht (ja ist doppeltgemoppelt). Was Du hier vereinbarst, kannst Du dann in /etc/profile und als User mit den Dateien im Homeverzeichnis überschreiben oder ergänzen.
Bei mir (Sol8 ) wird die .login/.profile in home übrigends nur ausgewertet, wenn ich den PATH mit den Dateien in /etc/default/login ../su setze. Andernfalls sind alle Änderungswünsche an das Ende der '~home/.dtprofile' anzuhängen.

DeraZZ

  • Gast
Re: PATH setzen, die 2.
« Antwort #11 am: 07. Februar 2006, 16:52:50 »
So, habe jetzt meinen Pfad in die /etc/profile eingetragen, das Ergebnis ist wie gewünscht.
Ich hatte sogar zwei Pfadangaben, einmal PATH=$PATH:/opt/sfw/bin:/opt/sfw/sbin und noch
MANPATH=$MANPATH:/opt/sfw/man eingetragen, funzt auch. Habe dann später die
(punkt)profile von luca_ ausprobiert, die if-zeile in /usr/bin/bash geändert ('which bash' gibt
bei mir '/usr/bin/bash' aus), die PATH-variable angepasst (hab ich in /etc/profile wieder entfernt)
und laufenlassen. Ausgewertet wird die (punkt)profile, der Pfad ist wiederum wie gewünscht,
allerdings ist mein Prompt immer noch "#" . Naja, neues Problem(chen), neuer Thread.  ::)
Der Prompt ist jetzt nicht soo wichtig, das mach ich ein andermal...
Werde also einfach alle Pfadangaben in die /etc/profile packen, dann sind sie für alle user
gleich. Und ich bin halt der einzige user im System.

Herzlichen Dank für Eure Hilfe!
Andreas

Offline Jonny

  • Global Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1063
Re: PATH setzen, die 2.
« Antwort #12 am: 07. Februar 2006, 23:17:37 »
Das mit dem Heimatverzeichnis von root finde ich unter Solaris suboptimal ::)
Du kannst das Gewünschte erreichen, wenn du /.profile anlegst und befummelst.
Die Stelle im Script ist egal, solange du danach einen export PATH machst und es halt
nicht durch irgend welche Schleifen-/If-Konstrukte nicht ausgeführt wird.

Die bessere Lösung ist auf alle Fälle die /etc/passwd zu befummeln und dort das
root Homedir von / in /root umbenamsen. Ich würde mir dort auch noch so was wie
z.B. einen lroot anlegen, dem kann man dann auch ein eigenes Homedir geben und
auch die bevorzugte Shell verpassen (ändere nie die Shell von root).

Sollte ich hier was doppelt gepostet haben oder sonst Schmarrn erzählt haben, dann
gebe ich zu den Thread nur überfolgen zu haben :-\

Gruß
Jonny
solaris is like a wigwam :
no windows, no gates and a apache inside !

claus

  • Gast
Re: PATH setzen, die 2.
« Antwort #13 am: 08. Februar 2006, 01:15:17 »
Die bessere Lösung ist auf alle Fälle die /etc/passwd zu befummeln und dort das
root Homedir von / in /root umbenamsen. Ich würde mir dort auch noch so was wie
z.B. einen lroot anlegen, dem kann man dann auch ein eigenes Homedir geben und
auch die bevorzugte Shell verpassen (ändere nie die Shell von root).

Sehr gute Idee, das.

Aber warum sollte man denn die Shell von root nicht ändern?

Claus

Luca_

  • Gast
Re: PATH setzen, die 2.
« Antwort #14 am: 08. Februar 2006, 19:11:49 »
Die bessere Lösung ist auf alle Fälle die /etc/passwd zu befummeln und dort das
root Homedir von / in /root umbenamsen. Ich würde mir dort auch noch so was wie
z.B. einen lroot anlegen, dem kann man dann auch ein eigenes Homedir geben und
auch die bevorzugte Shell verpassen (ändere nie die Shell von root).

Sehr gute Idee, das.

Aber warum sollte man denn die Shell von root nicht ändern?

Claus

würde mich auch wundern.. mach ich immer so. ohne bash kann ich nicht so toll leben .. =)

und zum prompt problem mit dem #

könnte es sein, dass deine shell nicht bash ist wenn die .profile ausgeführt wird? ;)
wieder das stichwort standard shell in der /etc/passwd