2013-10-26 13 views
0

我試圖安裝最新的ROS Hydro,所有事情都很順利,因爲一切似乎都已下載並配置到適當的位置。每當我使用ros時,我都會提供一個設置腳本。當我試圖發生的問題:發生sourceing setup.sh給出了bash錯誤/tmp/setup.sh.DPE4BtgiZY:無法覆蓋現有文件

source setup.sh 

一個錯誤:

bash: /tmp/setup.sh.DPE4BtgiZY: cannot overwrite existing file 
bash: [: 0: unary operator expected 

我試圖運行該腳本以root或使其成爲一個可執行文件,但沒有工作和相同的錯誤仍然存​​在。下面是

#!/bin/bash 
# generated from catkin/cmake/template/setup.sh.in 

# Sets various environment variables and sources additional environment hooks. 
# It tries it's best to undo changes from a previously sourced setup file before. 
# Supported command line options: 
# --extend: skips the undoing of changes from a previously sourced setup file 

# since this file is sourced either use the provided _CATKIN_SETUP_DIR 
# or fall back to the destination set at configure time 
: ${_CATKIN_SETUP_DIR:=/opt/ros/hydro} 
_SETUP_UTIL="$_CATKIN_SETUP_DIR/_setup_util.py" 
unset _CATKIN_SETUP_DIR 

if [ ! -f "$_SETUP_UTIL" ]; then 
    echo "Missing Python script: $_SETUP_UTIL" 
    return 22 
fi 

# detect if running on Darwin platform 
_UNAME=`uname -s` 
_IS_DARWIN=0 
if [ "$_UNAME" = "Darwin" ]; then 
    _IS_DARWIN=1 
fi 
unset _UNAME 

# make sure to export all environment variables 
export CMAKE_PREFIX_PATH 
export CPATH 
if [ $_IS_DARWIN -eq 0 ]; then 
    export LD_LIBRARY_PATH 
else 
    export DYLD_LIBRARY_PATH 
fi 
unset _IS_DARWIN 
export PATH 
export PKG_CONFIG_PATH 
export PYTHONPATH 


# remember type of shell if not already set 
if [ -z "$CATKIN_SHELL" ]; then 
    CATKIN_SHELL=sh 
fi 

# invoke Python script to generate necessary exports of environment variables 
_SETUP_TMP=`mktemp /tmp/setup.sh.XXXXXXXXXX` 
if [ $? -ne 0 -o ! -f "$_SETUP_TMP" ]; then 
    echo "Could not create temporary file: $_SETUP_TMP" 
    return 1 
fi 
CATKIN_SHELL=$CATKIN_SHELL "$_SETUP_UTIL" [email protected] > $_SETUP_TMP 
unset _SETUP_UTIL 
. $_SETUP_TMP 
rm -f $_SETUP_TMP 
unset _SETUP_TMP 

# source all environment hooks 
_i=0 
while [ $_i -lt $_CATKIN_ENVIRONMENT_HOOKS_COUNT ]; do 
    eval _envfile=\$_CATKIN_ENVIRONMENT_HOOKS_$_i 
    unset _CATKIN_ENVIRONMENT_HOOKS_$_i 
    eval _envfile_workspace=\$_CATKIN_ENVIRONMENT_HOOKS_${_i}_WORKSPACE 
    unset _CATKIN_ENVIRONMENT_HOOKS_${_i}_WORKSPACE 
    # set workspace for environment hook 
    CATKIN_ENV_HOOK_WORKSPACE=$_envfile_workspace 
    . "$_envfile" 
    unset CATKIN_ENV_HOOK_WORKSPACE 
    _i=$((_i + 1)) 
done 
unset _i 

unset _CATKIN_ENVIRONMENT_HOOKS_COUNT 
+0

清理/tmp/setup.*並再次運行 – michael501

+0

@邁克爾我已經嘗試已經,沒有一個文件一樣,在'。/ tmp /'中。我試圖清空整個'。/ tmp'目錄,但問題依然存在。 – cyc115

回答

0

我做了兩個修改爲setup.sh得到它的工作的setup.sh:

「調用的Python腳本生成的環境變量需要出口」變化

CATKIN_SHELL=$CATKIN_SHELL "$_SETUP_UTIL" [email protected] > $_SETUP_TMP 

CATKIN_SHELL=$CATKIN_SHELL "$_SETUP_UTIL" [email protected] >> $_SETUP_TMP 

「源中的所有環境掛鉤」

while [ $_i -lt $_CATKIN_ENVIRONMENT_HOOKS_COUNT ]; do 

改變而框的終止條件來

while [[ $_i -lt $_CATKIN_ENVIRONMENT_HOOKS_COUNT ]]; do 

的誤差應該消失。

參考文獻:

+0

yup〜!這個很好用〜!非常感謝〜! – cyc115