• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] USER environment not set

TeXpert

Guru
das Environment entsprechend setzen, zur Not mit einem source der /etc/profile und co.

init-Scripte werden ja nicht im Userkontext ausgeführt. evtl. reicht aber auch schon ein späteres starten...
 
OP
R

rolle

Guru
Gut, dann stelle ich die Frage etwas anders: Wie setze ich das environment? Später starten geht praktisch nicht mehr, es läuft schon als ziemlich spätes Script, danach kommt nicht mehr viel.
 
Irgendwo im Startzweig:
Code:
. /etc/profile
.<leerzeichen>/etc/profile

Man könnte auch vor dem "startkde &" noch schreiben:
.<leerzeichen>/etc/profile
.<leerzeichen>$HOME/.profile

Haveaniceday

PS: Für die mitlesenden Anfänger: ein normaler Aufruf "/etc/profile" würde ein "Child" erzeugen, in dem die Variablen gesetzt werden.
Child beendet => "Parent" also der Aufrufer, kennt nix von den Variablen.
".<leerzeichen>/etc/profile" => Der Befehl /etc/profile wird nicht als
Child aufgerufen => Variablen bleiben erhalten, allerdings ein Fehler/Exit im Skript beendet auch "ganz".
Bei csh/tcsh heißt der Befehl "source <scriptmitsettings>"
 

TeXpert

Guru
haveaniceday schrieb:
Bei csh/tcsh heißt der Befehl "source <scriptmitsettings>"

<korinthenkacke>und um portabel zu bleiben kann man auch mit der bash sourcen ;)

man bash schrieb:
source filename [arguments]
Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename. If
filename does not contain a slash, file names in PATH are used to find the directory containing filename. The file searched for in PATH need not be
executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt
builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the positional parameters when filename is exe-
cuted. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no com-
mands are executed), and false if filename is not found or cannot be read.
</korinthenkacke>

aber das kommt unter dem Strich für die Bash aufs gleiche raus ;)
 
OP
R

rolle

Guru
Ich nutze die Bash. Aber irgendwie bin ich immer noch zu doof. Was ist mit 'Startzweig' gemeint? Ich hatte '. /etc/profile' jetzt mal nach 'export HOME' in das Script eingetragen. Trotzdem kam wieder die Fehlermeldung, daß die 'USER environment variable' nicht gesetzt sei. Aber ich bin schon weiter. Immerhin startet jetzt ein VNC-Server, jedoch nur als blanker X-Server, also Mauskreuz auf grau.
 
Code:
...
case "$1" in
start)
. /etc/profile
echo -n "Starting vnc-Server with Terminal-ID $FOO_ID "
# Delete old PIDs
...

Code:
export LANG="de_DE"
case "$VNCDESKTOP" in
kde)
. ./etc/profile
. ~/.profile
startkde &

Ich bin mir aber nicht sicher, ob Variablen falsch gesetzt werden, wenn z.B. der vnc-server als root gestartet und als anderer user genutzt wird.
Dann könnte das einbinden von /etc/profile z.B. USER evtl. auf dem alten Wert ( root ) lassen.

Haveaniceday
 
OP
R

rolle

Guru
Ich habe das jetzt alles so eingetragen, es ergibt sich aber keine Änderung - die Fehlermeldung bleibt gleich und es startet ein blanker X-Server.
 
@TeXpert, gut ergänzt. csh-Syntax mag ich vom Prinzip nicht und vergesse ich immer.. :oops:

@taki, thanks.

Irgendwie bin ich unkonzentriert...

@rolle,

den blanken X-Server hatte ich in der Vergangenheit bei falschen Settings in /etc/sysconfig/

=> /etc/sysconfig/displaymanager => DISPLAYMANAGER_REMOTE_ACCESS="yes"
+ SuSEconfig --force

Ohne das SuSEconfig mit force griff irgendwie der vncserver nicht auf kde zu.
Für die Analyse von "USER" wäre interessant wo diese Ausgabe auftritt.
Du kannst in die Shellskripts mal ein "set -x" mit reinsetzen, dann sieht man in der Shell
besser wo was kommt.

( Hinweis: manchmal kommen stdout(1) und stderr(2) mit unterschiedlichem "flush"
echo Hallo ; echo nix 1>&2
könnte auch als folgendes ausgegeben werden.
Code:
nix
Hallo
)

Also die Ausgabe von "set -x" und normale Ausgaben könnten zeitlich verschoben kommen.

Haveaniceday
 
OP
R

rolle

Guru
So, die Lösung war eine ganz andere. Ich habe mir mal /usr/X11R6/bin/vncserver angesehen. Dort gibt es eine Option, die überprüft, ob HOME und USER gesetzt sind. Also habe ich einfach mal unter 'export HOME' in meinem init-Script
Code:
USER="root"
export USER
eingegeben. Dann mußte ich noch alle '. /etc/profile' wieder löschen. Jetzt funktioniert alles.
Vielen Dank an alle, die geholfen haben.
 
Oben