我读过一个令人不安的话题阀门用户在使用 steam 脚本时丢失了系统。关于reddit.linux以及reddit/steam。
这可能不是一个常见问题,因为我更改了系统的各种配置。有问题的脚本以一种非常非常愚蠢的方式执行某些操作,但它可能不会触发每个系统的失败场景,因为...
原始错误:
我不确定发生了什么。我将标题中的文件夹移动到了安装于其下的驱动器
/media/user/BLAH
,并符号链接/home/user/.local/steam
到了新位置。我启动了 steam。它没有启动,它让我浏览,当我指向新位置时仍然找不到它。Steam 崩溃了。我重新启动了它。
它重新安装并且一切看起来都很好。直到我查看并发现 steam 显然已从根目录中递归删除了我用户拥有的所有内容。包括我的 3TB 外部驱动器,我将所有内容备份到安装在 /media 下的驱动器。
大部分重要的东西都在云端。虽然很麻烦,但也不至于太糟。如果移动 steam 文件夹可能会导致目录树中的所有内容被递归删除,那么你应该直接抛出错误,而不是尝试指向其他内容。或者,允许用户像在 Windows 上一样先选择一个安装目录。
我的系统是 ubuntu 14.04,如果有价值的话,我将其移动到的驱动器是 ntfs。
答案1
问题始于脚本“steam.sh”的第 19 行左右:
STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMDATA="$STEAMROOT"
$STEAMROOT
可以在这里变为空,从而有效地使rm -rf "$STEAMROOT/"*
脚本的进一步内容与 rm -rf "/"*.
补丁已经出现,但这个脚本有很多问题。最容易更改,至少可以防止删除不应删除的文件...
rm -rf "$STEAMROOT/"*
到 ...
[[ -n $STEAMROOT && $STEAMROOT =~ 'steam' ]] && rm -rf $STEAMROOT
STEAMDATA
也可以在设置后立即添加退出:
STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMDATA="$STEAMROOT"
if [ -z "$STEAMROOT" ]; then
echo "stop script otherwise files are deleted from /."
exit 1
fi
如果有人以 root 身份安装 steam,请注意:它将删除你的整个磁盘。