Если я su user
из моего домашнего каталога, я получаю отказано в разрешении на завершение bash, но если я su user
из другого каталога, ошибки нет.
Can't locate strict.pm: lib/strict.pm: Permission denied at
/usr/bin/vendor_perl/bash-complete line 7.
BEGIN failed--compilation aborted at /usr/bin/vendor_perl/bash-complete line 7.
Строка 7 ссылочного файла use strict;
... включена в каждую версию perl, по крайней мере, с конца 90-х.
su user
источники /etc/bash.bashrc
и пользователь должен .bashrc
. Почему местоположение вызывающего пользователя в файловой системе изменит это?
См. мой репо для более подробной информации, но я думаю, что я получил необходимые основы здесь.
Редактировать: подробное описание настройки.
Я добавил следующие строки в /etc/bash.bashrc (где и происходит ошибка):
if [[ $USER == 'testloginfiles' ]]; then
echo "/etc/bash.bashrc (-: $-) ($(shopt login_shell))"
printf '@INC: %s\n' $(perl -e 'print join ":", @INC')
fi
И это вывод, если я нахожусь в моем домашнем каталоге:
$ pwd;su testloginfiles
/home/harleypig
Password:
/etc/bash.bashrc (-: himBH) (login_shell off)
@INC: lib:/usr/lib/perl5/5.28/site_perl:/usr/share/perl5/site_perl:/usr/lib/perl5/5.28/vendor_perl:/usr/share/perl5/vendor_perl:/usr/lib/perl5/5.28/core_perl:/usr/share/perl5/core_perl
Can't locate strict.pm: lib/strict.pm: Permission denied at /usr/bin/vendor_perl/bash-complete line 7.
BEGIN failed--compilation aborted at /usr/bin/vendor_perl/bash-complete line 7.
/home/testloginfiles/.bashrc (-: himBH) (login_shell off)
[testloginfiles@sweetums harleypig]$
Если я нахожусь в другом каталоге (например, /tmp
), я получаю следующее:
$ pwd ; su testloginfiles
/tmp
Password:
/etc/bash.bashrc (-: himBH) (login_shell off)
@INC: lib:/usr/lib/perl5/5.28/site_perl:/usr/share/perl5/site_perl:/usr/lib/perl5/5.28/vendor_perl:/usr/share/perl5/vendor_perl:/usr/lib/perl5/5.28/core_perl:/usr/share/perl5/core_perl
/home/testloginfiles/.bashrc (-: himBH) (login_shell off)
[testloginfiles@sweetums tmp]$
Существует относительный путь, как подсказывает @pcronin, но ни в моем домашнем каталоге, ни в /tmp
нет каталога lib. Почему один вызывает ошибку, а другой нет?