Как добавить параметры CLASSPATH навсегда при использовании sudo?

3196
Fnux

В Ubuntu 12.04.2 LTS 64bit, при использовании sudoили sudo -iили sudo suдаже suв сеансе, чтобы использовать и Java, и Scala, мне нужно ввести следующие команды:

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

Можно ли сделать эти изменения постоянными и эффективными при загрузке?

Я пытался включить CLASSPATH=$CLASSPATH:/usr/share/java/scala-library.jarв .bashrc как свою учетную запись пользователя, так и учетную запись root, но это изменение не применяется при использовании sudo, sudo -iили, sudo suили даже su!

TIA за любую помощь по этой проблеме.

3
`man 5 sudoers`, раздел` Командная среда`. Вы также можете сделать `su -` для полной оболочки входа в систему. n.m. 11 лет назад 0
Спасибо, я прочитал полный текст, но я не нашел ничего связанного с CLASSPATH. Кроме того, я новичок в Ubuntu (и Linux в целом) и, возможно, немного тупой. Где и что я должен добавить в sudoers (используя visudo), чтобы внести необходимые изменения? ТИА. Fnux 11 лет назад 0
Используйте `visudo` и ищите разделы` env_keep`. n.m. 11 лет назад 0
В `sudo 'не будет ничего специфического для Java / JVM (` CLASSPATH`), но у него есть гибкие опции и контроль конфигурации для обработки среды. Randall Schulz 11 лет назад 0
Извините, Рэндалл, но дело в sudo заключается в том, что он «убивает» CLASSPATH, который используется как Scala, так и Java. Таким образом, речь идет не только о / etc / sudoers, но и о / etc / environment, и, поскольку я новичок, довольно сложно найти подробные ответы для установки таких параметров. Во всяком случае, спасибо за ваш вклад. Fnux 11 лет назад 0

1 ответ на вопрос

1
Arkanon

Вы можете использовать env_keepопцию конфигурации в sudoers и добавить ее "CLASSPATH"так, чтобы CLASSPATHпеременная среды переносилась в среду sudo. Это будет работать только в том случае, если CLASSPATHоно уже установлено в вашей домашней среде, но, похоже, вы уже достигли такого уровня.

Это обсуждение на форумах Ubuntu может помочь.

Спасибо Арканон и да, я тоже это сделал, и это работает для Ubuntu 10.04 LTS. К сожалению, это не работает, как ожидалось с 12,04 LTS. например, при этом вы больше не можете запускать sudo gedit bla bla bla, не получив сообщение об ошибке типа: Не удается открыть дисплей! Тем не менее, еще раз спасибо за трюк. Итак, с 12.04 единственное решение, которое я нашел работающим, это отключить строку по умолчанию env_reset в / etc / sudoers и добавить строку CLASSPATH = $ CLASSPATH: /usr/share/java/scala-library.jar в / etc / environment для Ubuntu 12.04 LTS. Fnux 11 лет назад 0
Хм, вы видели это http://askubuntu.com/questions/186015/cannot-open-gedit-display-on-ubuntu-server-12-04, которое, кажется, связано с той же проблемой? Arkanon 11 лет назад 0
Привет Арканон. И да, я тоже уже прочитал этот материал! Кстати, я делаю это не на «сервере» без установки с графическим интерфейсом, а с полной «настольной» установки с использованием Gnome и Unity! Итак, я повторяю, помещая строку Defaults env_keep = CLASSPATH в / etc / sudoers с Ubuntu 12.04, выдает это «странное» поведение (потому что я не хочу говорить «ошибка»), когда эта проблема не возникает с Ubuntu 10.04! Спасибо Canonical 'Devs за такое "тупое" изменение "!: = ( Fnux 11 лет назад 0

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