Я внес изменения в мою систему Arch Linux x86-64, где я запускаю bash исключительно через то, что я считаю режимом POSIX, используя /bin/sh
(связанный с '/bin/bash') в качестве оболочки входа в систему и вместо того, чтобы помещать вещи в /etc/profile
я определил ENV=/etc/shrc
в моей /etc/environment
в соответствии с руководством по Bash, чтобы он запускал файл /etc/shrc
при запуске, куда идут все мои псевдонимы, подсказки и подобные вещи.
По сути, я хотел полностью отказаться от специфических функций Bash, включая /etc/profile
и друзей.
Однако возникла проблема, когда после выполнения sudo
нет переменной ENV
, поскольку sudo
явно сбрасывает среду (либо после синтаксического анализа /etc/environment
либо вообще без этого), и, таким образом, все мои псевдонимы и прочее исчезают. sudo -i
делает то же самое, в основном - нет ENV
.
Должен ли я считать это полезным для безопасности системы, или я должен что-то с этим сделать, например make sudo, сохранить переменную ENV
?
Чтобы добавить к этому горе, su -
(но не su
) также не хватает ENV
и, следовательно, все, что делает /etc/shrc
. Так может, в конце концов, это не просто проблема sudo
? Bash не страница руководства конкретно по этому, я думаю - это просто говорит : «При вызове в качестве интерактивной оболочки с именем ш, Баш ищет переменной ENV ...» -Ну, я призываю его в качестве интерактивной оболочки, не я ? Почему в моей среде нет ENV (протестировано с env
)
Я не понимаю, как сохранить POSIXness всего этого и в то же время не вводить слабые места в безопасности, хотя заставляю sudo
сохранять один или несколько env. переменные. По крайней мере, это должно сохранить ENV
, нет?
Я надеюсь, что я проясняю здесь.