Почему я могу вызвать Java от одного пользователя, но не root?

1266
Ramy

Я думаю, что эта последовательность команд объясняет весь мой вопрос:

[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 

Запущенная федора 13

Я полагаю, что стоит явно спросить: какие шаги мне нужно предпринять, чтобы иметь возможность вызывать java от имени root?

больше информации:

[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 

ОБНОВЛЕНИЕ: так очевидно, что "/usr/java/jdk1.6.0_22/bin" отсутствует в пути для root. Как я могу добавить его к пути для root ?? вот мой ~ / 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 ответа на вопрос

3
billc.cn

Проверьте, есть ли на вашем пути java, например, с помощью команд

which java echo $PATH 

с и без рута.

Я обновил свой вопрос, но мне нужна дополнительная помощь. Я не уверен, как изменить мой путь или каким образом изменить его. Ramy 13 лет назад 0
Привет, вы можете изменить переменную среды PATH в файлах конфигурации оболочки. Местоположение меняется от дистрибутива к дистрибутиву, но вы можете найти его в / etc (например, /etc/bash.bashrc, / etc / profile, /etc/profile.d/*). Вы можете найти детали, прибегая к помощи "[имя дистрибутива] изменить путь". Вам также может понадобиться установить JAVA_HOME, чтобы убедиться, что java находит правильные библиотеки. billc.cn 13 лет назад 0
2
Windos

Обратите внимание, что это от пользователя Windows с опытом работы в Linux всего несколько недель, поэтому, если я использую некоторые термины Windowsy, извините.

Файлы, необходимые для вызова Java, могут находиться в домашнем каталоге вашего пользователя или в каталоге Downloads. Эти местоположения могут не просматриваться, когда вы являетесь пользователем root (подобно тому, когда что-то отсутствует в переменной пути Windows), поэтому под root ОС просматривает общие области (и домашнюю директорию root) и не может найти его под Пользователь ищет в общих зонах, и это домашний каталог и находит его там.

Попробуйте найти файлы Java и переместить их в общую область.

**/так далее** ‽‽‽‽‽‽ Hello71 13 лет назад 1
Я не знал, где его разместить, и / etc / был единственным каталогом, о котором я мог подумать ... отсюда и "?" Windos 13 лет назад 0
[FHS] (http://www.pathname.com/fhs/pub/fhs-2.3.html): "/ etc: Конфигурация системы для конкретного хоста" Hello71 13 лет назад 0
@ Джош Кинг: если вы не знаете Unix-файловую систему, просто отбросьте эту часть ответа. особенно для "пользователей Windows с опытом работы в Linux всего на несколько недель", они примут ваши `/ etc` предложения как верный ответ ... akira 13 лет назад 0

Похожие вопросы