Wie füge ich CLASSPATH-Parameter dauerhaft hinzu, wenn ich sudo verwende?

3

Unter Ubuntu 12.04.2 LTS 64bit muss ich bei Verwendung von sudooder sudo -ioder sudo susogar suin einer Sitzung die folgenden Befehle eingeben, um sowohl Java als auch Scala zu verwenden:

sudo -i
CLASSPATH=$CLASSPATH:/usr/share/java/scala-library.jar
export CLASSPATH

Ist es möglich, diese Änderungen beim Booten dauerhaft und wirksam zu machen?

Ich habe versucht, CLASSPATH=$CLASSPATH:/usr/share/java/scala-library.jarsowohl mein Benutzerkonto als auch das Root-Konto in .bashrc aufzunehmen, aber diese Änderung wird bei der Verwendung von sudo, oder sudo -ioder sudo suoder sogar nicht übernommen su!

TIA für jede Hilfe zu diesem Problem.

Fnux
quelle
man 5 sudoersAbschnitt Command environment. Sie können auch su -für eine vollständige Login-Shell tun .
nm
Vielen Dank, nm. Ich habe den kompletten Mann gelesen, aber ich habe nichts in Bezug auf CLASSPATH gefunden. Außerdem bin ich ein Neuling in Ubuntu (und Linux im Allgemeinen) und vielleicht ein bisschen dumm. Wo und was sollte ich Sudoern hinzufügen (mit Visudo), um die erforderlichen Änderungen vorzunehmen? TIA.
Fnux
Verwenden visudound suchen Sie nach env_keepAbschnitten.
nm
Es wird nichts sudospezielles für Java / JVM ( CLASSPATH) geben, aber es verfügt über flexible Optionen und Konfigurationssteuerung für den Umgang mit der Umgebung.
Randall Schulz
Tut mir leid, Randall, aber das Besondere an sudo ist, dass es den CLASSPATH "tötet", der sowohl von Scala als auch von Java verwendet wird. Es geht also nicht nur um / etc / sudoers, sondern auch um / etc / environment, und da ich ein Neuling bin, ist es ziemlich schwierig, detaillierte Antworten zum Festlegen solcher Parameter zu finden. Trotzdem vielen Dank für Ihre Eingabe.
Fnux

Antworten:

1

Sie können die env_keepKonfigurationsoption in sudoers verwenden und hinzufügen, "CLASSPATH"damit die CLASSPATHUmgebungsvariable in die sudo-Umgebung übertragen wird. Dies würde nur funktionieren, wenn dies CLASSPATHin Ihrer häuslichen Umgebung bereits eingestellt ist, aber es hört sich so an, als ob Sie bereits so weit gekommen sind.

Diese Diskussion in den Ubuntu-Foren könnte helfen.

Arkanon
quelle
Vielen Dank, Arkanon und ja, das habe ich auch getan und das funktioniert für Ubuntu 10.04 LTS. Leider funktioniert dies mit dem 12.04 LTS nicht wie erwartet. zB wenn Sie dies tun, können Sie sudo gedit bla bla bla nicht mehr starten, ohne eine Fehlermeldung zu erhalten wie: Das Display kann nicht geöffnet werden! Nochmals vielen Dank für den Trick. Die einzige Lösung, die ich mit 12.04 gefunden habe, besteht darin, die Zeile Defaults env_reset von / etc / sudoers zu deaktivieren und die Zeile CLASSPATH = $ CLASSPATH: /usr/share/java/scala-library.jar in / etc / environment einzufügen für Ubuntu 12.04 LTS.
Fnux
Hmmm, haben Sie diese askubuntu.com/questions/186015/… gesehen, die sich auf dasselbe Problem zu beziehen scheint?
Arkanon
Hallo Arkanon. Und ja, das habe ich auch schon gelesen! Übrigens mache ich das nicht auf einem "Server" ohne GUI-Installation, sondern von einer vollständigen "Desktop" -Installation mit Gnome und Unity! Also wiederhole ich das Setzen der Zeile Defaults env_keep = CLASSPATH in / etc / sudoers mit Ubuntu 12.04, was dieses "seltsame" Verhalten hervorruft (weil ich nicht "Bug" sagen möchte), wenn dieses Problem mit Ubuntu 10.04 nicht auftritt! Vielen Dank an Canonical 'Devs für solch eine "blöde" Veränderung !: = (
Fnux