ksh Enviroment setzen

OsunSeyi

Well-Known Member
Ich weiß nicht, woran es liegt..

Weder ~/.profile noch die von mir angelegte ~/.kshrc werden berücksichtigt.
Ich würde gerne $PATH für mein Homeverzeichnis definieren.

Habe bereits in /etc/ksh.kshrc den Eintrag $HOME/.kshrc einkommentiert, aber geholfen hat es nicht.

Code:
OBSD$ cat .kshrc
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:~/BIN/CORE
export PATH

OBSD$ echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin

OBSD$ grep '$HOME/.kshrc' /etc/ksh.kshrc
#    to by $ENV (usually $HOME/.kshrc).
#    Korn shell.  A user's $HOME/.kshrc file simply requires
    $HOME/.kshrc


~~~~~~~~~~
ferner:

OBSD$ cat .profile
export ENV=$HOME/.kshrc

OBSD$ echo $ENV   ...bleibt leer!
 
Zuletzt bearbeitet:
Leider kann ich den obigen nicht mehr editieren.

Der Eintrag in /etc/ksh.kshrc war falsch

Jetzt schaut es so aus, daß in ~.xsession der Eintrag . ~/.profile ~/.profile lädt, und auch $PATH gesetzt werden kann. PATH=$PATH:~/bin

Ob das im Sinne des Erfinders ist, es so zu machen, weiß ich nicht...

Ich vermute mal, es macht ein Unterschied, ob X mit Xenodm oder per startx gestartet wird.

Was ist denn generell der richtige Weg um zu bewirken, daß ~.profile berücksichtigt wird?
Und warum berücksichtigt Ksh die ~/.kshrc nicht von vorneherein, so sie existiert?
 
Zuletzt bearbeitet:
Die Login-Shell wird aus der etc/passwd festgelegt. 'chsh' wechselt das. Welche Shell eingestellt ist s. 'cat passwd'. Die korn Shell ist m.E. nicht mehr in, aber darüber läßt sich vortrefflich streiten.
 
Code:
~ getent passwd $LOGNAME | cut -d: -f7
/bin/ksh
~ echo $-
ims

Es gibt auch einen Eintrag in in ~/.Xresouces:
XTerm*loginShell: True

Mitterweile ist es mir gelungen, $PATH , Aliase und History zu aktivieren...

:huth:

Vielen Dank & ich wünsche allen eine Frohe Weihnacht usw

Code:
______________ _/\_
______________ } _{
___________o`* o.@*o`.
__________.' '*Q o *o@
__________( () o*o* @ o'.
_________.-' o *0_Q.-'-;*o)
_________.' 0 Q @0@ ()* `-.
________* @ o*o @. ‘Q * o )
_______o`-...-@""-Q '-~@'`0*.’
_______.'` @ Q * 0*’Q. ‘ @`-.)
_______*.' o . @* '-@‘o’’Q.*-oQ’.
______* @ * ._()__0*Q.~-' @ ()* `
______(o () * o* Q'._@_Q o ()’´´*.'.
_____________||......||
_____________||......||
 
Was ich leider nicht hinbekomme, ist den Prompt zu wechseln, wenn ich mit su auf root wechse.
Daß ich dort $PATH anpassen kann, kommt aus /etc/login.conf:

Code:
~ egrep -A1 '^default:' /etc/login.conf
default:\
    :path=/root/bin /usr/bin /bin /usr/sbin /sbin /usr/X11R6/bin /usr/local/bin /usr/local/sbin:\

Aber eigentlich sollte es besser sein, dies nebst Anderem (zB dem Prompt) in /root/.profile zu definieren!
Das scheint aber nicht zu funktionieren...
 
Ja es ist Weihnachten und editieren geht nach einer Weile nicht mehr.
Nach längerem Probieren habe ich folgendes in ~/.profile:

Code:
case "$(id -u)" in
   0) PS1="\[\033[1;31m\]\W\[\033[0;00m\] "       ;;
  ,*) PS1="\[\033[1;37m\]\W\[\033[0;00m\] "       ;;
esac
     
   export PS1

Normalerweise sollte ich einen hellroten Prompt erhalten, wenn ich nach su wechsel.
Das klappt aber nicht....

Wie es jetzt ist, kann ich nicht unterscheiden, ob ich im Superusermodus bin oder nicht.
Das ist schon etwas ätzend...

BTW
Code:
~ cat /etc/wsconsctl.conf                                                     
keyboard.bell.volume=0
...bleibt ohne Wirkung, es biept daß es eine Freude ist
 
Der Eintrag in ~/.profile ist jetzt:

Code:
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# PROMPT
# 1;32  = hellgruen
# 1;31m = hellrot

case "$(whoami)" in
   tom)  _COL="\[\033[1;32m\]\W\[\033[0;00m\] "       ;;
   root) _COL="\[\033[1;31m\]\W\[\033[0;00m\] "       ;;
esac

  PS1=$_COL' \$ '
  export PS1

Auf der Konsole sieht das so aus:

Code:
~  $ whoami
tom
~  $ su                           # gruen
Password:
tom  # whoami               # Prompt sollte rot sein, bleibt aber gruen
root
tom  # exit
~  $ su -                         # gruen
Password:
OBSD# whoami                                                       
root
OBSD# exit                  # Prompt schaut wie Systemdefault aus
~  $

vielleicht liegt es an der Art, wie ich ~/.profile eingebunden habe:
Sie wird in ~/.xsession mit . ~/.profile eingebunden.

Es ginge mir allerdings auch darum, $PATH und alias für Root separat defiieren zu können.
Ich vermute, ich brauche auch eine Art export DISPLAY Angabe für Root, um zB einen grafischen Editor mit Root-Rechnen öffnen zu können.
 
Code:
in ~/.profile:

PS1='$(if (($? == 0)); then print -n "\\033[32m"; else print -n "\\033[31m"; fi)'
PS1="$PS1"'[\u@\h \w]'$(print '\033')'[0m '

in der Konsole:

[tom@OBSD ~] su -             # gruen
Password:
OBSD#                         # Systemdefault (nicht rot)


echo $PS1
$(if (($? == 0)); then print -n "\033[32m"; else print -n "\033[31m"; fi)[\u@\h \w]
Code:
#///////////////////   P R O F I L E   F U E R   O P E N - B S D
# Diese Datei wird im Orgmode erstellt, aufgerufen durch ~/.xsession:

# PATH
# Hier der Original-Eintrag von OBSD:

        PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin

for file in `find /home/tom/BIN -type d` ; do

        if [ ! `echo $file | egrep '(/tmp)|(DIR)|(/Bookmarks|(/ROOT))'` ] ; then PATH=$PATH:$file ; fi
done
        export PATH

# PROMPT
# 1;32  = hellgruen
# 1;31m = hellrot


PS1='$(if (($? == 0)); then print -n "\\033[32m"; else print -n "\\033[31m"; fi)'
PS1="$PS1"'[\u@\h \w]'$(print '\033')'[0m '
  
#case "$(whoami)" in
#   tom)  _COL="\[\033[1;32m\]\W\[\033[0;00m\] "       ;;
#   root) _COL="\[\033[1;31m\]\W\[\033[0;00m\] "       ;;
#esac

#  PS1=$_COL' \$ '
#  export PS1

# PAGER UND EDITOR

        export PAGER=/usr/local/bin/most
        export EDITOR=/usr/local/bin/scite

# HISTORY

        export HISTFILE=/home/tom/.history
        export HISTSIZE=5000
        export HISTCONTROL=ignoreboth      # Dopplungen und Kommandos mit '^:space:'

# ALIAS

        . $HOME/.alias
        export ENV=/home/tom/.alias              # fuer Sakura

# VARIABLEN:

        export DAT=/mnt/HD/DAT
        export DIR=$HOME/DIR
        export BIN=$HOME/BIN
 
Du hast recht. Das funktioniert nicht besonders zuverlaessig. Hier mal eine neue Version:

1703589845220.png

Code:
$ cat ~/.profile
[...]
PS1=$(print '\033[32m')'\u@\h:\W\$'$(print '\033')'[0m '

# cat /root/.profile
[...]
PS1=$(print '\033[31m')'\u@\h:\W\$'$(print '\033')'[0m '
 
Ich glaube ich hab's:

~/.profile muss mit export ENV=/home/tom/.profile und nicht einfach . ~/.profile eingebunden werden.
Der Aufruf erfolgt dann mit su.

Dann funktioniert auch:
Code:
case "$(whoami)" in
   tom)  _COL="\[\033[1;32m\]\W\[\033[0;00m\] "       ;;
   root) _COL="\[\033[1;31m\]\W\[\033[0;00m\] "       ;;
esac

Deine Lösung gefällt mir aber besser, weil /root/.profile verwendet wird.
für "su -" könnte ein Alias genommen werden...
 
Ich will mal versuchen, es zusammenzufassen (korrigiert mich wenn es falsch ist).

1)
Um die Ksh richtig zu konfigurieren, muss die Konfiguration in der Variablen $ENV liegen,
einzubinden mit export ENV=file was jede Datei sein könnte, aber konform entweder
~/.kshrc oder ~/.profile sein mag.

2)
Alle weiteren Dateien wie ~/.alias können dann in der in $ENV festgelegten Datei einfach mit
zB . ~/.alias eingebunden werden.

In dieser Konfiguration wird jede neu geöffnete Konsole die Konfiguration neu einlesen.

3)
Andere Shells oder bei einer anderen globalen Konfiguration von Ksh würden evtl ~/.kshrc oder ~/.profile
auch von alleine einlesen, ohne daß sie extra in ~\.Xdefaults oder ~/.xsession eingebunden werden muß.

4)
Wobei ~\.Xdefaults per startx eingebunden wird , ~/.xsession (bei OBSD) von Xenodm.

5)
Wenn ich zum Wechsel auf Root su - aufrufe, wird /root/.profile eingebunden.
Wenn ich zum Wechsel auf Root nur su aufrufe, bleibt es bei der Konfiguration, die in $ENV festgelegt wurde.

Bevor ich hier Mist verbreite, korrigiert mich bitte!
Das bisherige "Zusammengeschreibsel" in der Config hat mich übrigens nicht 2 sec sondern 1 Tag googeln gekostet...
 
Zurück
Oben