在另一个目录

时间:2017-09-30 09:56:30

标签: linux git bash shell raspberry-pi3

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

我可以从这里克隆can-utils.git https://github.com/linux-can/can-utils.git 使用sudo git clone https://github.com/linux-can/can-utils.git 但是当我需要运行./autogen.sh& ./configure因为它们位于dir can-utils中。

如果我按照网站上的说明从Pi终端运行它,它可以正常工作,因为我更改目录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 dir但由于某种原因它找不到它们。请有人帮助我,我一直在寻找过去2天的答案

2 个答案:

答案 0 :(得分:0)

感谢您的帮助,不管是对还是错,我最终都在使用cd /home/pi/can-utils我以为我过去曾尝试过这种做法,但我觉得cd ./can-utils无效。

答案 1 :(得分:-1)

带脚本的sudo对我来说是个噩梦。我只是读了我的fedora 25的sudo男人:

  

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

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

如果你继续使用sudo,我的建议应该在你的脚本之上添加一个cd命令:

cd /where_everithing_is

一定要在正确的地方。 但是,可能是,sudo将再次对抗你!