![单击运行时 Bash 脚本未创建文件](https://linux22.com/image/1505393/%E5%8D%95%E5%87%BB%E8%BF%90%E8%A1%8C%E6%97%B6%20Bash%20%E8%84%9A%E6%9C%AC%E6%9C%AA%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6.png)
我有一个 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 时文件未写入预期位置的最常见原因。