
Я переключаю пользователя с помощью команды:
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 или подобных, в зависимости от типа используемой им оболочки.