Переменная среды SHELL
всегда расширяется до оболочки входа по умолчанию вызывающего пользователя (получает значение из / etc / passwd
).
Для любого другого пользователя вам необходимо выполнить некоторую обработку с помощью / etc / passwd
, вот простой фрагмент awk
:
awk -F: -v user="foobar" '$1 == user {print $NF}' /etc/passwd
Replace foobar
] с фактическим именем пользователя.
Если у вас есть ldap
(или что-то подобное), используйте getent
для получения базы данных вместо прямого синтаксического анализа / etc / passwd
:
getent passwd | awk -F: -v user="foobar" '$1 == user {print $NF}'
или самый чистый подход, пусть getent
выполнит синтаксический анализ (спасибо @Kusalananda):
getent passwd foobar | awk -F: '{print $NF}'
Прежде всего прекратите использовать команду ifconfig с версией Centos 7 и более поздними версиями, потому что она не дает вам полной информации о параметрах вашей сетевой карты (Например, если вы назначили 2 IP-адреса своей карте )вместо этого используйте команду ipa или команду ip addr show. Второй Эта проблема в настоящее время отслеживается Red Hat как ошибка. Чтобы устранить эту проблему :Добавьте NM _CONTROLLED=no в /etc/sysconfig/network -scripts/ifcfg -lo. Основная причина :ifcfg -подключаемый модуль rh в NetworkManager не поддерживает тип интерфейса loopback и регистрирует сообщение об этом в системном журнале.