Как бы вы настроили правильные переменные среды и любые другие параметры, которые должны быть установлены при использовании команды su - username , но без дефиса?

т.е.

Если я использую

su - fooUser

Как бы я смоделировал вышесказанное после запуска su без дефиса?

su fooUser

Что мне нужно запустить здесь, чтобы настроить всю конфигурацию и все остальное, что устанавливает дефис?

1 ответ1

1

Краткий ответ: вы не можете.

Чем длиннее, тем правильнее ответ: вы можете переместить все из /etc/profile и эквивалент в /etc/bashrc и эквивалент (подробности зависят от используемой вами оболочки) и иметь первый источник, второй; это подберет вас настолько близко, насколько это возможно (с оговоркой, что некоторым вещам может потребоваться дополнительная проверка if/elif/fi, если они должны или не должны запускаться для оболочек входа в систему).

Дополнительный дефис - это сокращение от «-l» или «--login», которое сообщает su(1) как вызывать оболочку: По соглашению оболочка знает, что это оболочка "login", если ее argv[0] (имя, которое ему говорят, что оно было запущено, не должно совпадать с именем его двоичного файла) начинается с тире; например, bash найдет себя "вызываемым" -bash или -/bin/bash . Вы можете подтвердить это, войдя в консоль и запустив ps o pid,comm,args $$ - "args" будет начинаться с тире. Оболочка входа в систему использует другой набор файлов запуска, что является основным отличием; см. man-страницу для вашей оболочки (ей) для деталей (например, вызов bash). Есть некоторые тонкости в среде, которые устанавливаются до запуска bash, но все это можно исправить в этих файлах запуска.

На этом этапе полезно сделать шаг назад и подумать: какую проблему вы пытаетесь решить? Изменение вашей личности не должно быть чем-то, что вы обычно делаете; если вам это нужно, вы должны попытаться выяснить, как исправить основную вещь, которую вы пытаетесь сделать, чтобы она не требовалась.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .