В моем .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...