Сменить пользователя на терминале

Сменить пользователя на терминале

Я переключаю пользователя с помощью команды:

sudo su - userName

На моем терминале всегда есть:

user@user directory $ (some command)

Но когда я переключаю пользователя, у меня есть только:

$ (some commands)

Трудно объяснить, что я имею в виду, но я новичок в Linux и не нашел этого в других вопросах. Как сохранить все эти данные до знака $ после повторного входа?

Редактировать: Хорошо, у меня это работает. Я пересоздал пользователя с помощью команды: adduser name

Но у меня есть другой вопрос. Эта команда создает каталог /home, но он пустой. Есть ли какая-то команда для инициализации /home для нового пользователя?

решение1

Но у меня есть другой вопрос. Эта команда создает каталог /home, но он пустой. Есть ли какая-то команда для инициализации /home для нового пользователя?

Решение второго вопроса также решит и первый. У вашего нового пользователя нет всех файлов конфигурации по умолчанию в его домашнем каталоге, и поэтому новая оболочка не показывает затейливого приглашения и т. д...

Стандартная команда для создания нового пользователяиинициализируйте свой домашний каталог, используя содержимое /etc/skel:

useradd -m

И как уже было сказано, некоторые дистрибутивы имеют неправильные настройки по умолчанию, поэтому вам может потребоваться добавить больше опций:

useradd -m -s /bin/bash

Для более подробной информации используйте:

man useradd

Есть несколько крутых инструментов более высокого уровня, специфичных для дистрибутивов. Один пример, используемый в Debian и подобных, уже упоминался в комментариях к вашему вопросу:

adduser

Кроме того, в /etc есть конфигурация, которая может заставить useraddработать так, как нужно useradd -m, но, на мой взгляд, лучше научиться использовать ее -mвсегда, чтобы избежать влияния различных установок и дистрибутивов.

Из комментариев выше следует, что можно установить значения по умолчанию, используя -Dаргумент useradd:

useradd -D -s /path/to/default/shell

решение2

Вы переключаетесь на обычного пользователя, и у этого пользователя нет набора $PS1, но, по моему мнению, вы добавляете этого пользователя с помощью команды useradd в Debian. Исходя из того, что по умолчанию оболочкой при использовании useradd является sh, поэтому вы можете попробовать:

chsh -s /bin/bash userName

эта команда изменит оболочку для userName на /bin/bash. Затем попробуйте снова переключиться для этого пользователя. Если вы хотите изменить оболочку по умолчанию для bash при добавлении пользователя с помощью useradd, вы можете изменить файл /etc/default/useradd.

sed -i -e "s@\(^SHELL\).*@\1=/bin/bash@g" /etc/default/useradd

решение3

Вы переключаетесь с одного обычного пользователя (вас) на другого обычного пользователя, скажем, Джо, верно?
Ниже приведено приглашение оболочки, определенное в переменной окружения PS1:

user@user directory $

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

$

Вторая — это значение по умолчанию для программы простой оболочки, у вас, вероятно, это значение по умолчанию для дистрибутива Linux.

Попробуйте установить PS1 на тот же, что и в вашей учетной записи, это должно помочь:

user@usersBox directory $ эхо "$PS1"

и позже

$ PS1="......"
joe@usersBox directory $

Замените ...... на значение, указанное выше echo.

Слово после "@" обычно является именем компьютера, так что, полагаю, вы дали компьютеру то же имя, что и ваше имя пользователя во время настройки.
Чтобы сделать пример менее запутанным, я изменил имя компьютера на "usersBox".

Может быть, он намеренно удалил ваш вариант. Но, скорее всего, это вызвано какой-то случайной незначительной технической проблемой, и он не будет против, если вы измените его и для него в его файлах запуска, например, ~/.bashrc или подобных, в зависимости от типа используемой им оболочки.

Связанный контент