Warum kann ich Java von einem Benutzer aus aufrufen, aber nicht root?

1288
Ramy

Ich denke, diese Folge von Befehlen erklärt meine ganze Frage:

[Ramy@Moonface Downloads]$ java -version java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Server VM (build 17.1-b03, mixed mode) [Ramy@Moonface Downloads]$ su - Password:  [root@Moonface ~]# java -version bash: java: command not found 

Fedora laufen lassen 13

Ich nehme an, es lohnt sich ausdrücklich zu fragen: Welche Schritte muss ich unternehmen, um Java als root aufrufen zu können?

Mehr Info:

[Ramy@Moonface ~]$ which java /usr/java/jdk1.6.0_22/bin/java [Ramy@Moonface ~]$ echo $PATH /usr/java/jdk1.6.0_12/bin:/usr/java/jdk1.6.0_12/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/ sbin:/usr/sbin:/sbin:/home/Ramy/bin:/usr/java/jdk1.6.0_22/bin [Ramy@Moonface ~]$ su - Password:  [root@Moonface ~]# which java /usr/bin/which: no java in (/usr/java/jdk1.6.0_12/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/roo t/bin) [root@Moonface ~]# echo $PATH /usr/java/jdk1.6.0_12/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 

UPDATE: "/usr/java/jdk1.6.0_22/bin" fehlt offensichtlich im Pfad für root. Wie kann ich es dem Pfad für root hinzufügen? hier ist mein ~ / bash_profile:

# .bash_profile  # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi  # User specific environment and startup programs  PATH=$PATH:$HOME/bin  export PATH export JAVA_HOME="/usr/java/jdk1.6.0_22" 
2

2 Antworten auf die Frage

3
billc.cn

Prüfen Sie, ob Java auf Ihrem Pfad ist, z. B. mithilfe der Befehle

which java echo $PATH 

mit und ohne wurzel.

Ich habe meine Frage aktualisiert, aber ich brauche weitere Hilfe. Ich bin nicht sicher, wie ich meinen Pfad ändern soll oder wie ich ihn ändern soll. Ramy vor 12 Jahren 0
Hallo, Sie können die Umgebungsvariable PATH in den Shell-Konfigurationsdateien ändern. Der Speicherort ist von Distribution zu Distribution unterschiedlich, aber Sie finden ihn normalerweise in / etc (z. B. /etc/bash.bashrc, / etc / profile, /etc/profile.d/*). Details finden Sie, indem Sie "[Verteilungsname] Änderungspfad" googeln. Möglicherweise müssen Sie auch JAVA_HOME festlegen, um sicherzustellen, dass Java die richtigen Bibliotheken findet. billc.cn vor 12 Jahren 0
2
Windos

Das Folgende ist von einem Windows-Benutzer mit nur wenigen Wochen Linux-Erfahrung. Wenn ich einige Windowsy-Begriffe verwende, tut es mir leid.

Die zum Aufrufen von Java erforderlichen Dateien befinden sich möglicherweise im Basisverzeichnis des Benutzers oder im Download-Verzeichnis. Diese Speicherorte werden möglicherweise nicht durchsucht, wenn Sie root sind (ähnlich wie wenn sich etwas nicht in der Windows-Pfadvariablen befindet). Daher sucht das Betriebssystem unter root in allgemeinen Bereichen (und im Stammverzeichnis des root-Verzeichnisses) und kann es nicht finden Benutzer sieht es in den allgemeinen Bereichen und sein Home-Verzeichnis und findet es dort.

Versuchen Sie, die Java-Dateien zu finden und sie in einen gemeinsamen Bereich zu verschieben.

**/usw** ‽‽‽‽‽‽ Hello71 vor 12 Jahren 1
Ich wusste nicht, wo ich es ablegen sollte, und / etc / war das einzige Verzeichnis, an das ich denken konnte ... daher das "?" Windos vor 12 Jahren 0
[FHS] (http://www.pathname.com/fhs/pub/fhs-2.3.html): "/ etc: Hostspezifische Systemkonfiguration" Hello71 vor 12 Jahren 0
@Josh King: Wenn Sie das Unix-Dateisystem nicht kennen, sollten Sie diesen Teil der Antwort einfach fallen lassen. speziell für einen "Windows-Benutzer mit nur wenigen Wochen Linux-Erfahrung" werden Ihre `/ etc`-Vorschläge als gültige Antwort angenommen ... akira vor 12 Jahren 0