クリックして実行してもBashスクリプトがファイルを作成しない

クリックして実行してもBashスクリプトがファイルを作成しない

ファイルを生成するプログラムを実行する bash スクリプトがあり (実行元の現在のディレクトリに)、次に bash スクリプトがそれらのファイルとそのサイズをチェックします。

このスクリプトをターミナルから実行すると、すべて正常に動作し、ファイルが作成され、検出され、レポートされます。

問題は、これが基本的にユーザーフレンドリーであるはずであり、実行するためにクリック可能である必要があることです。スクリプトはクリックすると実行されますが、ファイルは生成されていないようです (おそらくどこか別の場所にあるのでしょうか?)。そのため、ファイルが見つからないためレポートは失敗します。

このスクリプトでは、プログラムを呼び出す前に cd ~/path/to/location を実行します。

#!/usr/bin/env bash
cd ~/path/to/location
./someprogram
if [ touch output.txt ]; then
  echo "FILE EXISTS"
fi

答え1

私の環境ではSHEBANGを使用して完全にコピーされなかったことが判明しました

#!usr/bin/env bash

スクリプト内で不足している環境変数を定義してエクスポートするだけで、スクリプトは正常に動作しました。

export ENV_VARIABLE_NAME=environment_variable_data

変数が bash 環境 (おそらく cshrc か何か) で定義されていなかったに違いありません。

答え2

申し訳ありませんが、私の評判ではコメントできないようですが、まず何かを確認していただくようお願いしているので、コメントしたほうが適切だったでしょう。

とにかく、私の質問は、コンソールと GUI を使用するときに同じユーザー名を使用しているかどうかです。

コンソールを使用しているときに root としてログインしているのに、GUI が別のユーザー名を使用してログインしている可能性があります。そのユーザー名には、ファイルを書き込もうとしているフォルダーに対する必要な権限がない可能性があります。

次に、GUI ユーザーに必要な権限が付与されていることを確認する必要があります (たとえば、ユーザー アカウントを関連するグループに追加するなど)。

これはおそらく、Linux を使用しているときにファイルが期待どおりの場所に書き込まれない最も一般的な理由です。

関連情報