如何让我的 bash 脚本写入特定目录?

问题描述 投票:0回答:0

TLDR;

如何在 Mac OS 上使用 Bash 脚本创建并构建到特定文件夹?

带有示例的详细问题...

大家好,我正在学习 BASH,无法让我的编译/构建写入 Mac OS 上的特定目录。

我不想使用 Homebrew 或 MacPorts 或类似的东西。我想从源代码编译/构建到非常具体的目录中,以免弄乱本地框。

这是我的 bash 脚本:

#! /bin/bash

# Error checking
set -Eeuo pipefail

#define variables
PREFIX=$HOME/Desktop/OpenTimeLineIO PKG_CONFIG_PATH="${PREFIX}"/share/pkgconfig:"${PREFIX}"/lib/pkgconfig:"${PREFIX}"/lib64/pkgconfig
LD_LIBRARY_PATH="${PREFIX}"/lib:"${PREFIX}"/lib64
CFLAGS="${PREFIX}"/include
download="${PREFIX}"/download

mkdir -pv "${download}"

#Dependencies needed for OpenTimeline IO
#Cmake https://gitlab.kitware.com/cmake/cmake
cd "${download}"
curl -LO https://gitlab.kitware.com/cmake/cmake/-/archive/master/cmake-master.tar.gz
tar -xvzf cmake-master.tar.gz
cd "${download}"/cmake-master
./bootstrap --prefix="${PREFIX}" \
            --bindir="${PREFIX}"/bin \
            --datadir="${PREFIX}"share/cmake \
            --docdir="${PREFIX}"/doc \
            --mandir="${PREFIX}"/man \
            --xdgdatadir="${PREFIX}"/share \
            --no-qt-gui
make
make install


#Python 3.x https://www.python.org/downloads/release/python-31011/
cd "${download}"
curl -LO https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tar.xz
tar -xvzf Python-3.10.11.tar.xz
cd "${download}"/Python-3.10.11
./configure --exec-prefix="${PREFIX}" \
            --bindir="${PREFIX}"bin \
            --includedir="${PREFIX}"/include \
            --libdir="${PREFIX}"/lib
make        
make install

我阅读了两者的编译文件(引导程序和配置),我想我已经写好了(哈哈,看看我在那里做了什么!)但是没有!

因为我明确地为下载设置了“mkdir”,所以写了并且因为我在那里卷曲并在那里提取,到目前为止一切都很好。

编译很好,但在构建时,它会在提取的 TAR 目录中创建 CMAKE bin 文件,而不是我想要的位置:$HOME/Desktop/OpenTimeLineIO/bin

Python更糟! 创建以下内容(是的,这就是它创建的内容!): $HOME/Desktop/OpenTimeLineIO/$HOME/Desktop/OpenTimeLineIO/bin /doc /share

我明白了:

Creating directory /usr/local/lib/python3.10
install: mkdir /usr/local/lib/python3.10: Permission denied

我不担心上述错误,因为我不想向 /usr/local/* 写入任何内容

不想那样,我想用下面的方法补救了(这个具体的例子):

./configure --exec-prefix="${PREFIX}" \
            --bindir="${PREFIX}"bin \
            --includedir="${PREFIX}"/include \
            --libdir="${PREFIX}"/lib

但是,Python 正确创建:$HOME/Desktop/OpenTimeLineIO/bin /lib /

我想要最终完成的是...

下载tars到(我自己创建之后): $HOME/桌面/OpenTimeLineIO

提取(创建新目录)在: $HOME/Desktop/OpenTimeLineIO/downloadedfile.tar.gz

从 downloadedfile.tar.gz 将目录更改为新目录,使用我的操作系统的 /bin 进行编译

在 NEW 目录(我创建的)中构建二进制文件和任何其他目录(share/libs/doc 等): $HOME/Desktop/OpenTimeLineIO/bin /share /docs 等...

另外,在我安装上面的内容之后我想编译的任何源代码都只使用我创建的目录。

基本上,我想将操作系统 /bin 与我下载的任何内容隔离开来。

希望这是有道理的!

感谢您的时间和帮助。

bash build compilation
© www.soinside.com 2019 - 2024. All rights reserved.