Причина это не работает, состоит в том, потому что она видит -i /bin/sh
как отдельный аргумент к env
. Обычно это было бы 2 аргументами, -i
и /bin/sh
. Это - просто ограничение хижины. Никакой путь вокруг этого.
Однако можно все еще выполнить эту задачу, просто другой путь.
Если Вы хотите, чтобы эта задача была выполнена самим сценарием и не, должны сделать что-то как env -i script.sh
, у Вас может быть передолжностное лицо сценария самостоятельно.
#!/bin/sh
[ -z "$CLEANED" ] && exec /bin/env -i CLEANED=1 /bin/sh "$0" "$@"
Это вызовет сценарий передолжностному лицу сам если CLEANED
переменная среды не установлена. Затем на передолжностном лице, это устанавливает переменную, чтобы удостовериться, что это не входит в цикл.
Попробуйте восстановить bash.bashrc в его настройках по умолчанию и вместо этого отредактируйте локальную копию PATH в файле ~/.bashrc. Другими словами, поместите последние две строки:
export PATH=$PATH:/usr/lib/jvm/jdk1.7.0_60/bin/
export JAVA_HOME=$JAVA_HOME:/usr/lib/jvm/jdk1.7.0_60/bin/java/
в файл ~/.bashrc вместо /etc/bash.bashrc. Возможно, вам придется перезапустить, чтобы изменения произошли.
Если это работает, и вы все еще хотите, чтобы изменения были общесистемными, тогда добавьте переменную PATH в /etc/environment, чтобы в ней был путь к Java.
. Для восстановления вашего /etc/bash.bashrc
до исходного состояния (если вы не помните, что это такое), вы можете сделать:
sudo rm /etc/bash.bashrc
sudo apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall bash
Иначе @ответапрад046 покажется вам лучшим решением.
.