web-dev-qa-db-ja.com

スクリプトは、ターミナルに入力すると実行されますが、.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のどちらのDEを実行しても、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
utsuro

[コマンドには==演算子がありません。 Bashはそれを許可しますが、ダッシュはしわがれます。使用する正しい演算子は=です。質問に投稿したスクリプトにはシバンがないため、shによって実行される可能性があります。そう:

#!/bin/sh
mkdir -p "$HOME/Desktop/ITRAN"
if [ "$DESKTOP_SESSION" = gnome-classic ]; then
    docky
fi

とにかく、失敗した場合は、~/.xsession-errorsにエラーメッセージが表示される可能性が高いので、そこに手がかりを探してください。

4
geirha

スクリプトが次で始まることを確認してください。

#!/bin/sh

さらに、スクリプトが実行可能であることを確認してください。

chmod a+x path/to/your/script.sh
0
jasmines