Команда
sed 's/a/b/' *ex/config/abs.json
не будет изменять никакие файлы. Он будет читать содержимое всех файлов, имена которых соответствуют заданному шаблону, но поскольку вы не записываете изменения обратно в файлы (, вы не используете -i
, например ), нет постоянного изменения, внесенные в содержимое файлов.
Чтобы увидеть, какие файлы были бы изменены, если бы вы использовалиsed -i
(при условии, что вы используете GNU sed
), вы должны сначала запустить
grep -l 'a' *ex/config/abs.json
Это выведет пути к файлам, которые содержат букву a
и, следовательно, будут изменены sed
выражением s/a/b/
, если было сделано редактирование в -месте .
Это потому, что вы изменили переменную IFS, чтобы использовать ' :'
поэтому, когда он выводит вашу переменную, он заменяется разделителем поля вывода по умолчанию, который является «пробелом», думая, что «:» является разделителем поля ввода.
вы должны сделать резервную копию перед использованием IFS, как показано ниже:
OIFS=$IFS
IFS=':';
после цикла 'for' восстановить его:
IFS=$OIFS
Также удалите ' :', который начинается без пути, предшествующего этому
PATH=${PATH#:*}
Ваш скрипт должен выглядеть так:
#!/bin/bash
export JAVA_HOME=$(dirname $(dirname `readlink -f /etc/alternatives/java`))
OIFS=$IFS
IFS=':';
for i in $PATH;
do
JAVA1=$i/bin/java
JAVA2=$i/java
if [ -d "$i" ];
then
if [ ! -L "$JAVA1" ] && [ -x "$JAVA1" ] || [ ! -L "$JAVA2" ] && [ -x "$JAVA2" ];
then
echo "dropping path: $i";
else
NEW=$NEW:$i
fi
fi
done
IFS=$OIFS
PATH=$NEW:$JAVA_HOME/bin
PATH=${PATH#:*}
echo
echo "Final:"
echo $PATH
Почему бы не установить текущую версию Java с помощью:
sudo update-alternatives --config java
sudo update-alternatives --config javac
(и любой другой двоичный код Java, который вам нужен)
Затем установите следующие параметры в .bashrc
или.zshrc
:
#!/bin/bash
if [ -z "${JAVA_HOME}" ]
then
JAVA_HOME=$(readlink -nf $(which java) | xargs dirname | xargs dirname | xargs dirname)
if [ ! -e "$JAVA_HOME" ]
then
JAVA_HOME=""
fi
export JAVA_HOME=$JAVA_HOME
fi
Этого достаточно, чтобы иметь настроенную среду Java, нет необходимости устанавливать переменную PATH, так как она уже управляется платформой альтернатив.
Ура Ф.