Snap安装的Gforth无法找到指定脚本文件的技术求助
解决Snap版Gforth无法访问系统文件的问题
问题分析
你在Arch Linux通过snapd安装的Gforth(路径/var/lib/snapd/snap/bin/gforth),执行本地.fs文件或CGI脚本时始终提示「No such file or directory」,即使文件路径正确、权限全开放也无效。核心原因是Snap应用默认采用严格的沙箱机制,会限制应用访问沙箱外的系统目录,比如/srv/http/cgi-bin/这类非Snap允许的路径。
解决方案
1. 调整Snap应用的权限
给Gforth添加读取系统文件的权限,执行以下命令:
sudo snap connect gforth:removable-media
这个权限允许Gforth访问系统中的可移动介质及部分公共目录,如果/srv/http/仍无法访问,可尝试使用更宽松的权限(不推荐用于生产环境):
sudo snap install gforth --devmode
--devmode会关闭沙箱限制,让Gforth完全访问系统文件。
2. 将文件移到Snap允许的目录
Snap应用默认可访问用户主目录下的文件,比如~/Documents/,把你的.fs文件或CGI脚本移到这个目录下再执行:
mv /srv/http/cgi-bin/mytest.fs ~/Documents/ gforth ~/Documents/mytest.fs
3. 改用Pacman安装Gforth(推荐)
Arch官方仓库里有Gforth,直接用Pacman安装可避免Snap沙箱的限制:
sudo pacman -S gforth
安装后直接执行本地文件即可,无需额外配置权限。
验证测试
用修改后的方式执行你的测试脚本:
." Hello World" bye
执行命令(以主目录文件为例):
gforth ~/Documents/mytest.fs
正常情况下会输出Hello World。
内容的提问来源于stack exchange,提问作者proto
相关产品推荐
相关产品推荐

