Во-первых, я бы проверил все места, откуда tcsh выполняет команды при запуске.
На справочной странице сказано следующее (Я выделил жирным шрифтом расположение файлов):
A login shell begins by executing commands from the system files /etc/csh.cshrc and /etc/csh.login. It then executes commands from files in the user's home directory: first ~/.tcshrc (+) or, if ~/.tcshrc is not found, ~/.cshrc, then ~/.history (or the value of the histfile shell variable), then ~/.login, and finally ~/.cshdirs (or the value of the dirsfile shell variable) (+). The shell may read /etc/csh.login before instead of after /etc/csh.cshrc, and ~/.login before instead of after ~/.tcshrc or ~/.cshrc and ~/.history, if so compiled; see the version shell variable. (+)
Если это вас ни к чему не приведет, я бы попробовал следующие две вещи:
w
-, который должен показать вам, что работает этот пользователь. Ctrl+Z
вместо Ctrl+C
-, что должно приостанавливать запущенный процесс, а не прерывать его. Затем jobs
, чтобы увидеть, что было приостановлено. РЕДАКТИРОВАТЬ :Как указал JdeBP в комментариях, вы также можете установить параметры -x
и -V
на tcsh в su -, хотя я думаю, что вы могли бы найти оскорбительную вещь с помощью -X
. Примерно так:
su - troublesome_user -- -X
Для пакетов проще всего просто попытаться установить их, но сработает что-то вроде синтаксического анализа выводаrpm -qa
(или эквивалентного для других схем упаковки ). Если это модуль Python, у вас может быть оператор try
-except
, в котором предложение except
может установить пакет, содержащий модуль, и повторить попытку импорта.
Это был вопрос, или мы все запутались?
Для модулей Python я использую такой код:
# Make sure we have all our necessary modules
allOK=True
for m in ['requests','json','yaml','argparse','re','traceback']:
try:
globals()[m]=importlib.import_module(m)
except Exception as e:
print 'Python module "%s" is required, please use "yum install python-%s" to install it.' % (m,m)
allOK=False
if not allOK:
print 'One or more modules missing, exiting.'
exit(1)