Це рішення, що надходить від Debian. Обґрунтування цього пояснюється в цьому дуже приємному вікі-пості , з якого подано нижче уривок. Короткий підсумок - "гарантувати, що вхід GUI та не GUI працюють однаково":
Візьмемо xdm як приклад. один день пієр повертається з відпустки і виявляє, що його системний адміністратор встановив xdm в системі Debian. Він увійде в систему просто, а xdm зчитує його .xsession файл та запускає флюкс-скриньку. Здається, все гаразд, поки він не отримає повідомлення про помилку в неправильній місцевості! Оскільки він переосмислює змінну LANG у своєму .bash_profile, а оскільки xdm ніколи не читає .bash_profile, його змінна LANG тепер встановлена на en_US замість fr_CA.
Тепер наївне рішення цієї проблеми полягає в тому, що замість запуску "xterm" він міг налаштувати свого вікна-менеджера для запуску "xterm -ls". Цей прапор повідомляє xterm, що замість запуску звичайної оболонки він повинен запустити оболонку входу. У цьому налаштуванні xterm нереєструє / bin / bash, але він ставить "- / bin / bash" (а може бути "-bash") у вектор аргументу, тому bash діє як оболонка входу. Це означає, що щоразу, коли він відкриває новий xterm, він буде читати / etc / profile та .bash_profile (вбудована поведінка bash), а потім .bashrc (тому що .bash_profile говорить про це). Спочатку це може здатися прекрасним - його точкові файли не надто важкі, тому він навіть не помічає затримки - але є більш тонка проблема. Він також запускає веб-браузер безпосередньо зі свого меню fluxbox, і веб-браузер успадковує змінну LANG від fluxbox, який тепер встановлений у неправильній локалі. Тож хоча його xterms може бути нормальним, і все, що було запущено з його xterms, може бути нормальним, його веб-браузер все ще надає йому сторінки в неправильній місцевості.
Отже, яке найкраще рішення цієї проблеми? Справді не існує універсального. Кращий підхід - це змінити .xsession файл, щоб виглядати приблизно так:
[ -r /etc/profile ] && source /etc/profile
[ -r ~/.bash_profile ] && source ~/.bash_profile
xmodmap -e 'keysym Super_R = Multi_key'
xterm &
exec fluxbox
Це призводить до того, що оболонка, що інтерпретує сценарій .xsession, читає в / etc / profile та .bash_profile, якщо вони існують та читаються, перед запуском xmodmap або xterm або "виконувати" менеджер вікон. Однак є один потенційний недолік цього підходу: під xdm оболонка, що читає .xsession, працює без контрольного терміналу. Якщо або / etc / profile, або .bash_profile використовує будь-які команди, які передбачають наявність терміналу (наприклад, "fortune" або "stty"), ці команди можуть не працювати. Це основна причина, чому xdm не читає ці файли за замовчуванням. Якщо ви збираєтеся використовувати цей підхід, ви повинні переконатися, що всі команди у ваших "точкових файлах" безпечно виконуватись, коли немає терміналу.
-n "$BASH_VERSION"
б правдою поза басом?