当我将脚本输入到终端时,脚本会运行,但当我从 .sh 文件运行它时,脚本不会运行

当我将脚本输入到终端时,脚本会运行,但当我从 .sh 文件运行它时,脚本不会运行

我想在启动时运行这个,因为我喜欢尝试使用多个 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

相关内容