Отсутствуют настройки псевдонима при вызове bash с подпроцессом в python - PullRequest
0 голосов
/ 24 июня 2019

Я поместил скрипт в /etc/profile.d/

# default_dba.sh
if  groups | grep -qw "dba" ;
 then 
if [ $USER != "oracle" ]; then
. /u00/scripts/oracle_alias
fi
fi

Скипт устанавливает псевдонимы, если пользователь LDAP является членом группы dba.Это работает.Пользователь LDAP запускает скрипт python.В качестве последнего шага скрипт python вызывает новую оболочку bash

subprocess.call(['/bin/bash', '-i'], shell=True)

В этом сеансе оболочки отсутствуют специальные псевдонимы (созданные сценарием / u00 / scripts / oracle_alias), только псевдонимы os по умолчанию:там.

Можно ли это исправить, не создавая домашние каталоги для пользователей LDAP?

1 Ответ

0 голосов
/ 26 июня 2019

Файлы запуска (в / etc / profile и т. Д.) Доступны только для чтения, когда оболочка вызывается как оболочка 'login'.Например: - bash -l

См. раздел «ПРИЗНАНИЕ» под man bash для более подробной информации.

фрагмент (со страницы руководства)

When  bash  is  invoked  as  an  interactive  login  shell, or as a non-interactive shell with the --login option, 
it first reads and executes commands from the file /etc/profile, if that file exists.  
After reading that file, it looks for ~/.bash_profile,  ~/.bash_login, and ~/.profile, in that order,
and reads and executes commands from the first one that exists and is readable.
The --noprofile option may be used when the shell is started to inhibit this behavior.
...