我想运行位于 system/bin 且权限为 755 的脚本。
有了sh myscript
就没有问题,但是即使输出是myscipt
也./myscript
不起作用。pwd
/system/bin
在 ubuntu 上我只需要输入/usr/bin
并设置权限后,就可以轻松运行它。我想知道为什么每次输入它时都必须输入 sh。
例如我将 aria2 二进制文件推送到 /system/bin (755),然后我可以轻松通过键入来运行aria2c
。我现在知道这不是脚本,但它们与我尝试过的东西是一样的。
更新
我有类似的 hashbang#!/bin/bash
并且哪个 sh 输出是/system/bin/sh
答案1
回答:Android 具有不同的文件系统布局,并且 bash 位于 (来自 linux PoV 非标准位置) /system/bin
。这就是为什么脚本可以在 linux (Ubuntu) 上运行,而不能在 android 上运行的原因。
为了使非本地可执行文件(例如 bash、python 等)正常工作,“hashbang”(#!
)必须更新为包含正确的解释器路径(#!/system/bin/bash
)。
/usr/bin/env
如果在 Android 上有,使用#!/usr/bin/env bash
将使脚本可移植。