![在 Android 上无需输入 sh 即可运行脚本](https://linux22.com/image/1490950/%E5%9C%A8%20Android%20%E4%B8%8A%E6%97%A0%E9%9C%80%E8%BE%93%E5%85%A5%20sh%20%E5%8D%B3%E5%8F%AF%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC.png)
我想运行位于 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
将使脚本可移植。