linux 克隆Git Repo并通过bash Script编译其C代码

hpcdzsge  于 2024-01-06  发布在  Linux
关注(0)|答案(1)|浏览(146)

我正在尝试使用bash脚本自动化仓库的克隆并构建其代码。我认为脚本中的一些命令需要使用sudo运行。为了实现这一点,我决定使用sudo运行整个脚本,但使用this thread中讨论的方法删除不需要的命令的root权限。
下面是我的脚本的样子(实际的脚本更长,但这是失败的部分):

#!/bin/bash
if ! [ $(id -u) = 0 ]; then
   echo "The script needs to be run as root." >&2
   exit 1
fi

if [ $SUDO_USER ]; then
    real_user=$SUDO_USER
else
    real_user=$(whoami)
fi

# Install the Micro-XRCE-DDS-Agent
sudo -su $real_user git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git /home/$real_user/Repos/Micro-XRCE-DDS-Agent
sudo -su $real_user mkdir /home/$real_user/Repos/Micro-XRCE-DDS-Agent/build
sudo -su $real_user cd /home/$real_user/Repos/Micro-XRCE-DDS-Agent/build
sudo -su $real_user cmake ..
sudo -su $real_user make
make install
ldconfig /usr/local/lib/
sudo -su $real_user cd

字符串
the resource quoted above中的声明相比,我将sudo -u $real_user命令更改为sudo -su $real_user,否则会得到错误sudo: cd: command not found
我这样运行脚本:

chmod u+x setup.sh
sudo bash setup.sh


然而,当我运行脚本时,我遇到了这个错误:

CMake Error: The source directory "/home" does not appear to contain CMakeLists.txt.


cmake ..命令似乎没有在/home/$real_user/Repos/Micro-XRCE-DDS-Agent/build中运行,而是在/home中运行。
我的主要问题是:为什么cmake ..前面的cd命令无效?
我也试过用pushdpopd更改工作目录,但也没有成功。
任何提示或建议将不胜感激!

4xrmg8kj

4xrmg8kj1#

只是建议,你为什么不做这样的东西?

#!/bin/bash 
if  [ $(id -u) -ne 0 ]
then
    echo "ERROR: This script should be executed with sudo!"
    exit 1
fi

# Install the Micro-XRCE-DDS-Agent
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git /home/<your/user>/Repos/Micro-XRCE-DDS-Agent
mkdir /home/<your/user>/Repos/Micro-XRCE-DDS-Agent/build
cd /home/<your/user>/Repos/Micro-XRCE-DDS-Agent/build
cmake ..
make
make install
ldconfig /usr/local/lib/

字符串
这样,如果你只是以sudo的形式运行脚本,它应该可以工作,你只需要在脚本中使用sudo,并在需要特权的行中使用。

相关问题