Linux 15.039 Themen, 107.136 Beiträge

javac environment variablen

the_silence / 2 Antworten / Baumansicht Nickles

Hi, ich habe bei einem Freund auf Suse 10.1 das JDK installiert.
Die Datei javac also der compiler lässt sich nur über /home/bla/blubb/./javac starten. Bei mir hingegen kann ich javac in der shell eingeben wo ich will. Ich vermute dass es an den Umgebungsvariablen liegt, da bei mir auch die datei javac ein * trägt, bei ihm nicht. Wo kann ich die Pfadvariablen setzen. In /etc/.profile steht dass man hier nichts ändern soll.
Bin ratlos

bei Antwort benachrichtigen
d-oli the_silence „javac environment variablen“
Optionen

Morgen

Javac wurde anscheinend nur für den einen User installiert, sonst würde sich javac im Verzeichniss /usr/bin befinden. Ev. hilft es, noch einmal in der Installationsanleitung nachzulesen, wie das Teil installiert werden soll.

Oder Du machst für diesen einen User einen Alias. Und das geht so:

Annahme: bash (bitte prüfen mit $ echo $SHELL)
$ cd
$ vi .bashrc
-- Hier Alias definieren
-- alias javac="/home/bla/blubb/../javac"
-- sollte .bashrc nicht existieren,
-- dann per $ touch .bashrc erzeugen
$ which javac
/home/bla/blubb/../javac

Jetzt neu booten oder $ source .bashrc eigeben - fertig.

Beachten musst Du die PATH Umgebungsvariable, die kannst Du wie folgt abfragen:
$ echo $PATH
oder ..
$ env | grep PATH | grep -v MAN | grep -v LD

Anstelle eines Alias könntest Du auch die PATH Umgebungsvariable erweitern. Das Beste wäre es aber, wenn das Ganze so installiert wird, dass sich das Binary in /usr/bin befindet.

Gruss, d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
KarstenW the_silence „javac environment variablen“
Optionen

Entweder du installierst dieses Programm für alle Benutzer, oder du passt eben die PATH Variable an.
Bei der Bash ist das so, für Login Shells wird zuerst die Datei /etc/profile verarbeitet, dann wird die datei $HOME/.bash_profile verarbeitet.
Für eine Nicht-Login-Shell wird die Datei $HOME/.bashrc eingelesen.

Ich gebe mal ein Beispiel von meinem Debian testing. Da wird die datei $HOME/.bashrc in die datei $HOME/bash_profile eingelesen:

cat .bash_profile

# ~/.bash_profile: executed by bash(1) for login shells.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/login.defs
#umask 022

# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# the rest of this file is commented out.


#in /home kann jeder Benutzer ein Verzeichnis für ausführbare Dateien, incl. Shellscripte, anlegen
# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
PATH=~/bin:"${PATH}"
fi

# do the same with MANPATH
#if [ -d ~/man ]; then
# MANPATH=~/man${MANPATH:-:}
# export MANPATH
#fi
# ---- language-env DON'T MODIFY THIS LINE!
# .bash_profile is executed on login.
if [ -f ~/.bashrc ]
then
# execute .bashrc if it exists.
. ~/.bashrc
fi
# ---- language-env end DON'T MODIFY THIS LINE!

PS: Ich würde fremde Programme in /usr/local/bin installieren. Da weiß man gleich, das diese Programme nicht zur Distribution gehören , und ein Update und die Wartung manuell erfolgen müssen.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen