Я думаю, что причина, по которой это не работает, в том, что две команды alias
запускаются после завершения сеанса bash
, начатого sudo
. Вы могли сделайте тестовый -источник скрипта, когда начнется новая сессия, нажмите Ctrl-d , чтобы выйти из него, а затем в исходном типе оболочки:
$ type cd1
cd1 is aliased to `cd /dir/one/'
$ type cd2
cd2 is aliased to `cd /dir/two/'
Я могу добиться того, чего вы хотите, с помощью скрипта expect
, но я не эксперт на то так критика приветствуется:
#!/usr/bin/expect -f
spawn sudo -u otheruser -i
send "alias cd1='cd /dir/one/'"
send "\n"
send "alias cd2='cd /dir/two/'"
send "\n"
interact
Убедитесь, что у вас действительно установлен expect
перед запуском этой программы. сценарий.
Возможно, вы сможете установить expect
и tcl
(, которые для этого требуются ), используя диспетчер пакетов вашей системы. Если вам нужно установить его вручную, см. инструкции для Expect по адресу http://expect.sourceforge.net/. Файлы README/INSTALL для Expect указывают вам на некоторые места для получения Tcl, но они кажутся устаревшими. Однако вы можете получить копию Tcl из ActiveState.
Я рекомендую вам использовать кофеин -нг:https://github.com/caffeine-ng/caffeine-ng. Это небольшое приложение в строке состояния, которое предотвращает активацию как заставки, так и режима сна / приостановки.
Вы можете установить его на Arch Linux с помощью пакета AUR caffeine -ng:
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/caffeine-ng.tar.gz
$ tar -xvf caffeine-ng.tar.gz
$ cd caffeine-ng/
$ makepkg
$ sudo pacman -U caffeine-ng-*-any.pkg.tar.xz