Ubuntu 上的启动脚本只有手动运行时才能正常运行

Ubuntu 上的启动脚本只有手动运行时才能正常运行

我正在尝试在会话启动时运行脚本,因此我将其添加到系统->首选项->启动应用程序。

脚本确实运行了,但里面的一些命令似乎根本没有运行。如果在启动后我打开终端并手动运行脚本,它就可以正常运行!

#!/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等。

相关内容