我想在启动时运行这个,因为我喜欢尝试使用多个 DE。当我从文件运行此脚本时,它不会运行 Docky。
我已经更改了文件权限,以便允许它作为程序运行。
当我在 gnome-terminal 中输入此代码时(如果我登录了 gnome-classic),它将运行 Docky。我想在启动时运行此脚本,这样 Docky 就不会在 Unity 中启动:
if [ $DESKTOP_SESSION == "gnome-classic" ] ; then docky ; fi
有什么建议吗?我尝试在同一个文件中编写类似 Firefox 的内容,它会启动 Firefox。因此,当我从文件运行以下脚本时...
cd /home/user/Desktop
mkdir ITRAN
if [ $DESKTOP_SESSION == "gnome-classic" ] ; then docky ; fi
它在我的桌面上创建一个新文件,但不会运行 Docky,即使我只是将相同的代码复制到终端窗口中它就会运行......
在 geirha 的帮助下,我修改了脚本。但是,现在无论我运行的是 Unity 还是 gnome-classic,docky 都会启动。
#!/bin/sh
if [ $DESKTOP_SESSION = "gnome-classic" ]; then
docky
fi
我也尝试过
$DESKTOP_SESSION = "gnome-classic"
$DESKTOP_SESSION = gnome-classic
"$DESKTOP_SESSION" = gnome-classic
"$DESKTOP_SESSION" = "gnome-classic"
以排除我那部分出错的可能性。
答案1
该[
命令没有==
运算符。Bash 允许它,但 dash 会感到畏缩。正确的运算符是=
。您在问题中发布的脚本没有 shebang,因此它很可能由 运行sh
。因此:
#!/bin/sh
mkdir -p "$HOME/Desktop/ITRAN"
if [ "$DESKTOP_SESSION" = gnome-classic ]; then
docky
fi
无论如何,如果失败了,您很可能会在中找到错误消息~/.xsession-errors
,因此请在那里寻找线索。
答案2
确保您的脚本以以下内容开头:
#!/bin/sh
此外,请确保你的脚本是可执行的:
chmod a+x path/to/your/script.sh