Можно только сделать это косвенно, например, использующие псевдонимы. Имейте свой сценарий удара, вместо того, чтобы измениться на желаемый каталог, просто распечатайте желаемый каталог к stdout. Perl должен затем получить этот вывод и также распечатать желаемый каталог к stdout. Псевдоним оболочки или функция оболочки могут затем взять тот вывод и изменить каталог в рабочей оболочке.
Пример:
a.sh:
#!/bin/bash
mkdir /tmp/$$
echo /tmp/$$
b.pl:
#!/usr/bin/perl
my $something = do_somestuff();
print `./a.sh $something`;
sub do_somestuff{
#do some processing here
return "";
}
Используйте эту функцию оболочки и протестируйте ее:
daku@server:/home/daku $ b() { DIR=`./b.pl`; if test -n "$DIR"; then cd "$DIR"; fi }
daku@server:/home/daku $ b
daku@server:/tmp/14397 $
Вы могли поместить его в свой crontab с
@reboot /pathto/script.sh