繁体   English   中英

在另一个目录中运行bash脚本

[英]Running bash script in another directory

我知道这个问题已经被问过很多次了,但是我无法使我的代码正常工作。 我正在使用带有CAN-BUS Shield的Raspberry Pi 3。 由于这将进入生产环境,因此我需要Pi设置既简单又好用。 我已经开始编写bash脚本,以便生产人员可以运行该脚本,Pi将从一个脚本更新并安装所需的一切。 我一直在关注该网站https://harrisonsand.com/can-on-the-raspberry-pi/ ,在编译can-utils时遇到了问题。

我能够通过使用sudo git clone https://github.com/linux-can/can-utils.git从此处https://github.com/linux-can/can-utils.git克隆can-utils.git sudo git clone https://github.com/linux-can/can-utils.git但是当我需要运行./autogen.sh./configure因为它们位于dir can-utils中。

如果我按照网站上的说明从Pi终端运行此程序,则在我更改dir cd can-utils然后仅更改sudo ./autogen.sh ,它可以很好地工作,但是当我在bash脚本中运行它时,它不起作用。

下面是到目前为止我拥有的脚本,我知道其中大部分已被注释掉,这样我可以在编写时测试每个部分,而无需不断下载和安装已有的内容

#!/bin/bash

## Change Password
#printf "***********************************************************************\n"
#printf "Changing Password\n"
#echo "pi:***********" | sudo chpasswd     # Password hidden
#sleep 1
#printf "Password Changed\n"

## Update & Upgrade Pi
#printf "***********************************************************************\n"
#printf "Update & Upgrade Pi\n\n"
#sudo apt-get update && sudo apt-get upgrade -y
#sleep 1

## Upgrade dist
#printf "***********************************************************************\n"
#printf "Upgrade Dist\n\n"
#sudo apt-get dist-upgrade -y
#sleep 1

## Install libtools
#printf "***********************************************************************\n"
#printf "Installing libtools\n\n"
#sudo apt-get install git autoconf libtool -y
#sleep 1

## Download required files
#printf "***********************************************************************\n"
#printf "Downloading required files\n\n"
## can-utils
#sudo git clone https://github.com/linux-can/can-utils.git
#sleep 1

## Auto configure can-utils
printf "***********************************************************************\n"
printf "Auto Configure can-utils\n\n"
# Things I have tried and do not work
#(cd /c && exec /can-utils/autogen.sh)
#sudo source /can-utils/autogen.sh
#sudo ./can-utils.autogen.sh
sleep 1

当我在Pi终端中尝试sudo ./can-utils.autogen.sh ,脚本开始工作,因此我认为这是我所需的正确命令,但随后出现错误autoreconf: 'configure.ac or 'configure.in' is required文件,这些文件位于can-utils目录中,但由于某种原因,找不到它们。 请有人帮我,我一直在寻找过去2天的答案

谢谢您的帮助,对还是错,我最终都使用了cd /home/pi/can-utils我曾经以为我曾经尝试过,但是我认为cd ./can-utils无法正常工作。

sudo脚本对我来说是一场噩梦。 我刚刚读过我的软呢帽25的须藤男:

通过sudo运行shell脚本可能会暴露相同的内核错误,这些内核错误会使setuid shell脚本在某些操作系统上不安全(如果您的操作系统具有/ dev / fd /目录,则setuid shell脚本通常是安全的)。

sudo命令应保护root帐户,以避免运行用户编写的脚本来获得root特权。

如果您继续使用sudo,我建议您在脚本之上添加cd命令:

cd /where_everithing_is

确保在正确的位置。 但是,也许,sudo会再次与您作战!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM