Этого не может быть. Вы, должно быть, изменили свою переменную PATH
где-то еще, потому что ваша /usr/local/sbin
идет после $JAVA_HOME/bin
, а не раньше. И после этого еще один /usr/lib/jvm/java-1.8.0-openjdk/bin
с дополнительным /home/admin/.local/bin:/home/admin/bin
.
И нет файла конфигурации bash_config
, который читается при запуске.
Проверьте свои ~/.bash_profile
, ~/.bashrc
и ~/.profile
.
Редактировать:
Для отладки закомментируйте все строки в /etc/profile.d/java.sh
(, пусть каждая строка начинается с#
)или переместите ее в другое место в качестве резервной копии и проверьте, есть ли какие-либо другие файлы в каталоге /etc/profile.d
. Также проверьте всю систему /etc/profile
.
Я до сих пор не понимаю, почему /bash_profile
должно было быть прочитано (, если оно не было получено вами в одном из этих файлов ). Если он был прочитан, то $HOME/.local/bin:$HOME/bin
расширяется до/home/admin/.local/bin:/home/admin/bin
(конечной части вашего сломанного PATH
), а PATH
уже был сломан и установлен на
$PATH:\
/usr/lib/jvm/java-1.8.0-openjdk/bin:\
/usr/local/sbin:\
/usr/sbin:\
/usr/lib/jvm/java-1.8.0-openjdk/bin
В Linux обычно установлен GNU awk . Я не знаю, какая версия awk поддерживает начальные нули для строки формата %s, но, похоже, она не соответствует стандарту -.
Попробуйте использовать %013d вместо %013s.
Из вопроса не очень понятно, чего именно вы хотите добиться
Если вы пытаетесь вывести десятичные числа, я бы написал
printf("%013d",a);
0
-It Left -дополняет число нулями вместо пробелов
Если вы пытаетесь напечатать символы, я бы написал
printf("%*s",13,"string which needs to be printed")
Здесь мы указываем длину символов, которые должны быть напечатаны как целочисленный аргумент для printf (), *
заменяется как переданный аргумент