Как открыть xterm -e 'command', сохранив уже объявленные функции? - PullRequest
0 голосов
/ 01 мая 2019

Я хотел бы выполнить следующую команду:

$ testfunction (){ echo 123;}
$ xterm -hold -e "testfunction"

возвращает: команда testfunction не найдена (в новом окне xterm).

но когда я вызываю функцию в главном терминале, она возвращает 123

$ testfunction
123

Пытались

В declare -F | grep testfunction я вижу, что функция объявлена.

Пытался объявить только переменную:

$ variable='123'
$ xterm -hold -e "echo $variable"

возвращает: 123 (в новом xterm).

Почему новый противоположный xterm не находит объявленные функции, но находит объявленные переменные?

1 Ответ

2 голосов
/ 01 мая 2019

Вам необходимо экспортировать функции / переменные, чтобы позволить дочерним процессам получать к ним доступ.

testfunction() { echo 123; }
export -f testfunction
xterm -hold -e "testfunction"

result

И, xterm -hold -e "echo $variable" не работаетна самом деле, это выглядит так.$variable находится в двойных кавычках и, следовательно, раскрывается перед вызовом xterm, то есть его значение передается в xterm, xterm -hold -e 'echo $variable' не будет работать, поскольку variable не экспортируется.

...