Назад | Перейти на главную страницу

BASH_ENV игнорируется на солярисе?

В моем .bash_profile, выполняемые как для моих интерактивных, так и для неинтерактивных входов в систему,

BASH_ENV=$HOME/.myinteractivestuff
export BASH_ENV

выполнение этого для bash в Linux отлично работает, но для Solaris не используется:

bash --version
GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10)

Любопытно, что если я вызываю screen в своей оболочке входа в систему, затем читается BASH_ENV. Существуют ли какие-либо ограничения на соблюдение $ BASH_ENV в Solaris? В моем случае я вхожу в систему с помощью ssh с помощью putty, но также пробовал unix для unix ssh и telnet и вижу то же самое.

Обратите внимание, что я знаю, что мое присвоение переменной BASH_ENV выполняется, поскольку я могу без проблем повторить эту переменную после входа в систему (т.е. исключить очевидную возможность того, что мой .bash_profile также не читается).

Вы говорите, что переменная BASH_ENV установлена ​​в Solaris, что означает, что две опубликованные вами строки работают правильно. Единственное, что они делают, - это устанавливают экспортируемую переменную, и вы подтверждаете, что это сделано.

Если установлено, BASH_ENV запускается при запуске сценария оболочки bash. Это означает, что если ~ / .myinteractivestuff запускается в вашей среде Linux, либо вы запускаете какой-либо сценарий в другом месте после установки BASH_ENV, либо вы явно отправляете его где-то в своем сценарии запуска.

Кстати, можно было бы написать попроще:

export BASH_ENV=~/.myinteractivestuff

Не совсем понятно, каковы ваши ожидания. В руководстве по bash говорится, что значение $ BASH_ENV используется только при выполнении сценария оболочки, но в вашем примере предполагается, что вы помещаете в него интерактивные команды. BASH_ENV=$HOME/.myinteractivestuff.

BASH_ENV

          If  this parameter is set when bash is executing a shell script,
          its value is interpreted as a filename  containing  commands  to
          initialize the shell, as in ~/.bashrc...