Korzystam z _JAVA_OPTIONS, aby ustawić niektóre ustawienia domyślne Java na RHEL. Działa dobrze, ale teraz za każdym razem, gdy uruchamiam java, pojawia się następujący komunikat
Picked up _JAVA_OPTIONS: -foo -bar -baz
czy można zachować opcje, ale ukryć wyświetlanie tego komunikatu?
Java jest często wywoływana za pomocą ścieżek bezwzględnych /usr/bin/java, co sprawia, że ta odpowiedź jest w niektórych przypadkach bezużyteczna i wymaga więcej, aby działała w innych.
To rozwiązanie, które znalazłem, wymaga napisania skryptu powłoki opakowania, który przekierowuje STDERR przez filtr usuwający linię obrażającą. To musi być umieszczony w $PATHprzed java binarnego owija i nazwać zwykłą java, which javalub podobne (lub narzędzie musi być skonfigurowany tak, aby go używać)
Opiera się na zdolności bash do utworzenia podpowłoki z nawiasami (command)i przekierowania STDERR Java do STDINcommand1 2> >(command2) . Wreszcie proces w podpowłoce musi ponownie przekierować filtrowane dane wejściowe do STDOUT, aby programy Java mogły nadal używać STDERR.
#!/bin/bash/usr/bin/java "$@"2>>(grep -v "^Picked up _JAVA_OPTIONS:">&2)
Prawdopodobnie okropna praktyka, ale dotyczy to obrazu dokera i zmęczyłem się tym całym czerwonym docker build- ale zmieniłem nazwę ${JAVA_HOME}/bin/javana java2i wstawiłem zmodyfikowaną wersję tego skryptu jako java(z chmod +x). Działa jak urok!
BrainSlugs83
2
Lub możesz umieścić to w swoich plikach startowych / profilach powłoki:
_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'
działa to tylko podczas bezpośredniego wywoływania java ...za pomocą wiersza poleceń. wszystkie wywołania java przez skrypty lub inne procesy nadrzędne pozostaną niezmienione
latające owce
cóż, możesz zmienić / bin / java na skrypt powłoki, który robi to samo, jeśli naprawdę chcesz.
spelufo,
nawet jeśli tego nie zrobisz, spowoduje to rozbrojenie opcji, więc wpłynie to również na inne polecenia. Uciszy ich, nie przekazując im żadnych opcji :).
docker build
- ale zmieniłem nazwę${JAVA_HOME}/bin/java
najava2
i wstawiłem zmodyfikowaną wersję tego skryptu jakojava
(zchmod +x
). Działa jak urok!Lub możesz umieścić to w swoich plikach startowych / profilach powłoki:
źródło
java ...
za pomocą wiersza poleceń. wszystkie wywołania java przez skrypty lub inne procesy nadrzędne pozostaną niezmienione