我正在尝试在会话启动时运行脚本,因此我将其添加到系统->首选项->启动应用程序。
脚本确实运行了,但里面的一些命令似乎根本没有运行。如果在启动后我打开终端并手动运行脚本,它就可以正常运行!
#!/bin/bash
if [ "$DISPLAY" == ":0.0" ]; then
tmux new -s Phys \; \
new-window -t Phys -n synergy \; \
send-keys -t Phys:1 '~/bin/start-synergy' 'enter' \; \
send-keys -t Phys:0 'xbmc' 'enter' \; \
select-window -t Phys:1
else
tmux new -s NX \; \
new-window -t NX -n miro \; \
send-keys -t NX:0 'transmission-gtk' 'enter' \; \
send-keys -t NX:1 'miro' 'enter' \; \
select-window -t NX:1
fi
我使用 tmux 的唯一原因是我能够看到控制台输出,因为我无法让脚本正确打开应用程序。
但是,它根本不起作用,tmux 没有启动。
正如我所说,如果我打开一个终端并运行这个脚本,那么它确实可以完美运行!
我尝试将 tmux 的输出重定向到日志文件以查看是否有线索,但日志最终为空。
另外,我添加了echo
输出到文件的命令,只是为了查看脚本是否正在运行,结果确实如此。
可能是什么原因?
答案1
脚本可能在路径完全设置之前就已运行。我通常习惯在脚本中运行的每个命令都使用绝对路径,以避免路径问题。
尝试更改tmux
为/path/to/tmux
;您可以通过运行命令 轻松找到此路径whereis tmux
。对子命令也执行相同操作 - 而不是~/bin/start-synergy
,例如,执行/home/[your username]/bin/start-synergy
等。