Змінити середовище користувача Unix


0

Увійшов як user1, я хотів би спроектувати інший користувач unix env, скажімо user2, без введення пароля.

Під "проектом" я маю на увазі:
- змінити поточний $HOME
- user2сценарій запуску bash для виклику (щоб отримати його швидке та глобальне значення)

Що я написав невеликий сценарій switch_user_env.sh:

HOME="/usr/users/$1"
cd "$HOME"

bash

. /etc/profile

if [ -f "$HOME/.bash_profile" ]; then
    . "$HOME/.bash_profile"
fi

if [ -f "$HOME/.profile" ]; then
    . "$HOME/.profile"
fi

Я називаю це так: . ./switch_user_env.sh user2

Поточна оболонка правильно зміниться на bash, але сценарії запуску не викликаються.

Чи можете ви допомогти мені зрозуміти, що не так?

Дякую !

[EDIT]
switch_user_env.shвихідний код доступний у GitHub: https://github.com/pierrefevrier/switch-user-env


1
Ви запустили нову оболонку із закликом bash. Він читає власні файли запуску. Якщо ви введете exit, ваша поточна оболонка продовжить ваш сценарій. Погляньте на suкоманду.
Джефф Шаллер

Відповіді:


0

Оскільки залишилася частина вашого сценарію (після виклику bash ) буде виконуватися після виходу з bash (введіть команду exit або "Ctrl + d"). Виклик bash у вашому скрипті бере на себе контроль подальшого виконання.

Ось оновлена ​​версія:

HOME="/usr/users/$1"
cd "$HOME"

SOURCE_PROFILE=/etc/profile

if [ -f "$HOME/.bash_profile" ]; then
    SOURCE_PROFILE="$HOME/.bash_profile"
fi

if [ -f "$HOME/.profile" ]; then
    SOURCE_PROFILE="$HOME/.profile"
fi


bash --rcfile "$SOURCE_PROFILE"

Тож як я можу викликати команди після bash one, які виконуються в новому поточному баші?
pierrefevrier

Будь ласка, зверніться до оновленого допису
Мурад Тагіров

Дякую, це зрозуміло. Але чому ~/.bash_profileі ~/.profileне викликаються автоматично при виклику bashкоманди?
pierrefevrier

1
Вони називаються. Але ~ / .bash_profile поточно зареєстрованого користувача. Але ви хочете завантажити середовище іншого користувача. За винятком поточного входу. Будь ласка, зверніться до сторінки bash man для отримання більш детальної інформації
Мурад Тагиров

Гаразд, я думав, що bash відноситься до поточних $HOMEдля виклику запуску сценаріїв, а не до поточного ввійшли користувача. Дякуємо за ваші пояснення!
pierrefevrier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.