То же самое должно работать и в nixos, хотя такие переменные, как EDITOR
, скорее всего, должны быть в .profile
. .bashrc
IIRC предназначен только для интерактивных оболочек, поэтому экспортированные туда переменные не будут доступны в программах, запускаемых из меню среды рабочего стола.
Вы также можете установить environment.variables.VARIABLE = "VALUE";
в configuration.nix
, но это не совсем подходит для личных переменных, таких как EDITOR
. (оф. если вы единственный пользователь, это не имеет большого значения)
Ваши сценарии закрываются, и bluetoothctl
завершается, как только echo
выполняется, что означает, что bluetoothctl
может не хватить времени для выполнения своей задачи. Вполне вероятно, что процесс co-завершает работу из-за получения сигнала PIPE
при попытке записать что-либо в стандартный вывод (, который закрывается выходом скрипта ).
Здесь у вас два варианта (вполне возможно, больше):
Дождитесь завершения процесса co -перед завершением сценария. Вы делаете это с помощью wait "$COPROC_PID"
перед окончанием скрипта. Это приведет к тому, что сценарий будет работать до тех пор, пока bluetoothctl
не будет завершен каким-либо другим способом (, вы можете, например, отправить ему команду quit
со вторымecho
).
Просто передайте строку в bluetoothctl
напрямую:
echo discoverable on | bluetoothctl
или, используя здесь строку -
bluetoothctl <<<'discoverable on'
Это приведет к завершению bluetoothctl
после выполнения команды. Сценарий завершается, когда выполняется bluetoothctl
.