SteamDeck脚本移至SD卡后终端启动异常及权限重置求助
问题解决:SD卡中Bash脚本的权限重置与异常配置文件问题
一、SD卡重新插入后执行权限被重置的解决方法
1. 检查文件系统类型
如果你的SD卡是FAT32/exFAT格式,这类文件系统不支持Linux的权限位(比如chmod +x设置的执行权限),每次挂载后权限都会被重置。解决方式:
- 备份SD卡数据后,格式化为ext4(Linux原生文件系统,支持权限管理):
# 先查看SD卡设备名(比如/dev/mmcblk0p1) lsblk # 格式化(注意替换为你的设备名,会清空数据) sudo mkfs.ext4 /dev/mmcblk0p1 - 如果不想格式化,每次运行脚本时直接用bash调用,无需执行权限:
bash /path/to/your/script_on_sdcard.sh
2. 修改挂载选项
如果SD卡已是ext4格式,但挂载时默认添加了noexec(禁止执行文件)选项:
- 查看SD卡的UUID:
blkid - 编辑
/etc/fstab文件,添加或修改SD卡的挂载条目,确保包含exec选项:
添加类似内容(替换为你的UUID和挂载点):sudo nano /etc/fstabUUID=xxxx-xxxx /mnt/sdcard ext4 defaults,rw,exec,user,auto 0 0 - 重新挂载SD卡生效:
sudo mount -a
二、异常配置文件(路径变为/run/...、名称为空)的解决方法
这个问题根源是SD卡的临时挂载路径(比如Steam Deck默认的/run/media/deck/xxx),系统会基于这个临时路径生成异常配置项。解决方式:
1. 将脚本迁移到本地目录
把SD卡上的脚本复制到本地固定路径(比如~/scripts),之后从本地运行:
mkdir -p ~/scripts cp /run/media/deck/your_sdcard/script.sh ~/scripts/ chmod +x ~/scripts/script.sh # 后续直接运行本地脚本 ~/scripts/script.sh
固定路径不会触发临时的/run路径,也就不会生成异常配置。
2. 给SD卡设置固定挂载点
如果一定要保留SD卡上的脚本,设置固定挂载点代替动态的/run/media路径:
- 创建固定挂载目录:
sudo mkdir /mnt/sdcard sudo chown deck:deck /mnt/sdcard - 按照前面的方法修改
/etc/fstab,将SD卡挂载到/mnt/sdcard,之后脚本路径为固定的/mnt/sdcard/script.sh,可避免异常配置问题。
额外脚本优化建议
你的脚本逻辑没问题,可简化不必要的文件操作:
#!/bin/bash TARGET_FILE="/home/deck/.config/wireplumber/bluetooth.lua.d/61-force-bluez.codec.lua" # 直接写入目标文件,无需临时文件 echo 'bluez_monitor.properties["bluez5.codecs"] = "[ sbc ]"' > "$TARGET_FILE" systemctl --user restart wireplumber
内容的提问来源于stack exchange,提问作者FECK I FORGOT MY NAME
相关产品推荐
相关产品推荐

