название терминала не устанавливается на экране - PullRequest
0 голосов
/ 28 сентября 2019

В настоящее время я устанавливаю заголовок терминала в команде screen, но скрипт bash дает мне:

Невозможно выполнить exec 'source / etc / profile && title.set root @ test':Нет такого файла или каталога

И я могу выполнить вышеуказанную команду успешно непосредственно из командной строки, вот мои сценарии:

/ usr / local / bin / s

#!/bin/bash
if [ $1 ]
then
    screen -D -R $1 -m "source /etc/profile && title.set `whoami`@$1"
else
    screen -R
fi

/ etc / profile

...
# Source global bash config
if test "$PS1" && test "$BASH" && test -z ${POSIXLY_CORRECT+x} && test -r /etc/bash.bashrc; then
        . /etc/bash.bashrc
fi

function title.set() {
      if [[ -z "$ORIG"  ]]; then
          ORIG=$PS1
      fi
      TITLE="\[\e]2;$*\a\]"
      PS1=${ORIG}${TITLE}

}
# Termcap is outdated, old, and crusty, kill it.
unset TERMCAP

# Man is much better than us at figuring this out
unset MANPATH
...

Так что здесь не так?

1 Ответ

0 голосов
/ 30 сентября 2019

Ключевое слово source представляет собой встроенную команду bash *, т. Е. Что-то, для чего необязательно существует фактический файл exec (еще одна встроенная команда).Вы можете только exec что-то, что является файлом - как bash, например, что-то вроде этого:

screen -D -R $1 -m bash -c "source /etc/profile && title.set `whoami`@$1"
...