2017-09-30 68 views
0

我知道這個問題之前已經被問過很多次了,但是我還沒有能夠讓我的代碼工作。 我正在使用Raspberry Pi 3,帶有CAN總線屏蔽。因爲這將進入生產環境,所以我需要Pi設置變得更加簡單。我已經開始編寫一個bash腳本,以便生產人員可以運行該腳本,並且Pi將從一個腳本更新並安裝它需要的所有內容。 我一直在關注這個網站https://harrisonsand.com/can-on-the-raspberry-pi/,並且在編譯can-utils時遇到了一個問題。在另一個目錄中運行bash腳本

我能夠通過使用sudo git clone https://github.com/linux-can/can-utils.git 克隆從這裏https://github.com/linux-can/can-utils.git 的CAN-utils.git但我的問題來了,當我需要運行./autogen.sh &的./configure因爲這些位於DIR可以-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 

當我嘗試sudo ./can-utils.autogen.sh在郫縣端腳本開始工作,所以我認爲這是某種正確的命令,我需要的,但後來我得到一個錯誤autoreconf: 'configure.ac or 'configure.in' is required這些文件是在CAN-utils的目錄,但對於某些原因它找不到它們。請有人可以幫我我一直在尋找最後2天的答案

+0

在未來,一個開始的地方將會建立一個[mcve] - 最短的代碼來展示你的問題。理想情況下,這將是兩行 - 一個'git clone',然後另一個嘗試運行'autogen',但沒有註釋掉的不相關的東西。 –

+0

順便說一句,你真的不應該在這裏使用'sudo'。它放大了您通過託管服務對'git'的攻擊或正在編譯的基礎中的惡意代碼所暴露的漏洞。 –

回答

-1

與腳本sudo是對我來說,一場噩夢。我剛剛看了我的Fedora 25的須藤的人:

運行通過sudo shell腳本可以公開相同的核心有臭蟲使得setuid的shell腳本不安全某些操作系統上(如果你的操作系統有一個的/ dev/FD /目錄,setuid shell腳本通常是安全的)。

sudo命令應該保護root帳戶,以避免運行用戶寫入的腳本獲得root權限。

如果你繼續使用sudo的,我的提醒應該對你的腳本的頂部添加一個cd命令:

cd /where_everithing_is 

可以肯定的是在正確的地方。 但是,可能是,sudo會再次與你抗爭!

0

謝謝你的幫助,對還是錯我已經結束了使用cd /home/pi/can-utils我以爲我曾嘗試過,但我認爲cd ./can-utils哪些沒有工作。

+0

'cd。/ can-utils'在你運行直接父母時會工作正常。 –

相關問題