我知道这个问题之前已被多次询问,但我无法让我的代码正常工作。 我正在使用带有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天的答案
答案 0 :(得分:0)
感谢您的帮助,不管是对还是错,我最终都在使用cd /home/pi/can-utils
我以为我过去曾尝试过这种做法,但我觉得cd ./can-utils
无效。
答案 1 :(得分:-1)
通过sudo运行shell脚本可能会暴露相同的内核错误,使得setuid shell脚本在某些操作系统上不安全(如果你的操作系统有/ dev / fd /目录,setuid shell脚本通常是安全的)。
sudo命令应保护root帐户,以避免运行用户编写的脚本以获得root权限。
如果你继续使用sudo,我的建议应该在你的脚本之上添加一个cd命令:
cd /where_everithing_is
一定要在正确的地方。 但是,可能是,sudo将再次对抗你!