我正在尝试将一个简单的批处理脚本转换为包。根据我对打包的(有限的)理解,这意味着我将把脚本存储在 中/usr/bin
。
问题是,批处理脚本使用了存储在其他地方的另一个 sh 脚本。sh 脚本无法作为 运行sudo
,并且 sh 脚本需要读取/写入 sh 脚本目录中的文件。这意味着我需要有一个位置来存储此脚本(及其使用的文件),而不需要sudo
。这可能吗?
(顺便说一句,由于该脚本还会将文件下载到用户主目录(~
),我无法让某人运行该脚本,sudo
因为文件所有权随后会被错误地处理下载的文件。除非这可以修复。)
答案1
手动执行
您可以使用 执行该命令bash /path/to/your.sh
。如果您将文件设置为可执行文件 ( chmod +x /path/to/your.sh
),那么您可以执行/path/to/your.sh
该命令,它将自动在 bash 下运行。您需要确保您的脚本具有舍邦。
$PATH
概述
$PATH是一个环境变量,列出了运行命令时想要搜索二进制文件的所有位置。
这就是/usr/bin
二进制文件的使用方法。
您可以通过打开终端并运行来查看当前的 $PATH echo $PATH
。
/most/important/path:/less/important/path
如上例所示,路径具有优先级;第一个路径优先搜索。这意味着如果二进制文件有两个版本,则将使用第一个路径中的版本。一旦找到二进制文件,它将停止在 $PATH 中的其他目录中搜索。
如果您尝试运行banana
,您的计算机将查找/most/important/path
。如果找到banana
,它将运行它。如果没有找到 ,它将继续搜索,并转到/less/important/path
。
修改
要将目录添加到用户路径中,您可以将其添加到文件中~/.bashrc
。您应该将路径追加到其中,而不是覆盖并弄乱路径。例如:
export $PATH=${PATH}:/new/less/important/directory
或者您可以将其设置为最高优先级目录:
export $PATH=/new/more/important/path:${PATH}
为了防止出现问题,您可能只应附加(第一个例子)。