AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1475165
Accepted
Yonatan Elizarov
Yonatan Elizarov
Asked: 2023-06-28 17:22:38 +0800 CST2023-06-28 17:22:38 +0800 CST 2023-06-28 17:22:38 +0800 CST

为Ubuntu添加永久环境变量

  • 772

我使用 Ubuntu 18.04,并使用 petalinux、Vivado 等软件。例如,每次我想打开 vivado 时,我都会打开终端并输入:

source /opt/XIlinx/Vivado/2020.2/settings64.sh

这仅适用于该特定终端。

我知道如果我编辑 .profile 文件,我可以使其变得多余。所以我添加这一行:

export PATH="$PATH:/opt/XIlinx/Vivado/2020.2/settings64.sh"

注销,登录,但如果不获取 settings64.sh 文件,我仍然无法打开 vivado。我究竟做错了什么?

这是 petalinux 源文件 - settings.sh:

#
# Setup script for PetaLinux development environment.
#
# Copyright (c) 1995-2013 Xilinx, Inc.  All rights reserved.
#

SETTINGS_FILE='settings.sh'
# The right location will be replaced by the installer
XIL_SCRIPT_LOC="./"

if [ $# != 0 ]; then
    # The first argument is the location of PetaLinux Installation
    # Don't detect the installation location
    XIL_SCRIPT_LOC="$1"
else
    #  XIL_SCRIPT_LOC should point to script location
    if [ "$0" == "ksh" ]; then
        XIL_SCRIPT_LOC_TMP_UNI=`readlink -f ${XIL_ARG_}`
    else
        XIL_SCRIPT_LOC_TMP_UNI=$BASH_SOURCE
    fi
    XIL_SCRIPT_LOC_TMP_UNI=${XIL_SCRIPT_LOC_TMP_UNI%/*}
    if [ "$XIL_SCRIPT_LOC_TMP_UNI" != "" ]; then
        if [ "$XIL_SCRIPT_LOC_TMP_UNI" == "settings.sh" ]; then
            XIL_SCRIPT_LOC_TMP_UNI="./"
        fi
        XIL_SCRIPT_LOC_TMP_UNI=`readlink -f ${XIL_SCRIPT_LOC_TMP_UNI}`
        if [ $? == 0 ]; then
            XIL_SCRIPT_LOC=${XIL_SCRIPT_LOC_TMP_UNI}
        fi
    fi
    unset XIL_SCRIPT_LOC_TMP_UNI
fi

export PETALINUX=`readlink -f "${XIL_SCRIPT_LOC}"`

if echo "${PETALINUX}" | grep -q ' '; then
    echo "********************************************************"
    echo "WARNING: PetaLinux SDK installation path contains spaces"
    echo "WARNING: You are STRONGLY recommend to fix this".
    echo "********************************************************"
fi
export PETALINUX_VER=2020.2

export XSCT_TOOLCHAIN="${PETALINUX}/tools/xsct"

# Figure out host system architecture
# for now, only linux-i386 supported

#
# Add toolchains to user's search path
#
PATH="${XSCT_TOOLCHAIN}/gnu/aarch32/lin/gcc-arm-none-eabi/bin:${PATH}"
PATH="${XSCT_TOOLCHAIN}/gnu/aarch64/lin/aarch64-none/bin:${PATH}"
PATH="${XSCT_TOOLCHAIN}/gnu/armr5/lin/gcc-arm-none-eabi/bin:${PATH}"
PATH="${XSCT_TOOLCHAIN}/gnu/microblaze/lin/bin:${PATH}"

#
# Add required binary tools to the user's search path
#
PATH="${PETALINUX}/tools/xsct/petalinux/bin:${PETALINUX}/tools/common/petalinux/bin:${PATH}"

#
# Check for "." or ".\" in the path - it's broken
#
echo "${PATH}" | tr ":" "\n" | grep '^\./*$' > /dev/null && 
    echo "WARNING: '.' detected in PATH - fixing it." 1>&2
PATH=`echo ${PATH} | tr ":" "\n" | grep -v '^\./*$' | tr "\n" ":"`

# Strip any trailing or multi-colons - they are interpreted as '.'
PATH=$(echo ${PATH} | sed -e 's/:*$//g' -e 's/::*/:/g')

export PATH


echo PetaLinux environment set to \'${PETALINUX}\'

for s in /bin/sh sh; do
    if ! $s --version 2>/dev/null | grep -q "^GNU bash"; then
        echo "WARNING: $s is not bash! "
        echo "bash is PetaLinux recommended shell. Please set your default shell to bash."
        break
    fi
done

if ! echo $SHELL | grep -q "bash"; then
    echo "WARNING: $SHELL is not bash! "
    echo "/bin/bash is Petalinux recommended SHELL variable. Please set your SHELL variable to /bin/bash."
fi

"${PETALINUX}"/tools/common/petalinux//utils/petalinux-env-check
environment-variables
  • 1 1 个回答
  • 53 Views

1 个回答

  • Voted
  1. Best Answer
    vanadium
    2023-06-28T18:22:43+08:002023-06-28T18:22:43+08:00

    我在做什么黄

    您将可执行脚本的路径名定义为目录路径。/opt/XIlinx/Vivado/2020.2/settings64.sh不是目录的路径,而是脚本的路径,settings64.sh. 必须获取该脚本(即每个命令必须在当前 shell 中执行)才能创建应用程序所需的设置。您知道这一点是因为您知道该命令source /opt/XIlinx/Vivado/2020.2/settings64.sh有效。

    因此,要自动执行该命令,只需将文件添加到文件中即可~/.bashrc。每当您打开终端时,都会自动读取并执行该文件。这意味着这些设置可用于从该终端启动的任何应用程序。

    要在登录后立即使用这些设置,请将该行添加到~/.profile. 每当您登录系统时,都会自动读取并执行该文件。这意味着这些设置适用于任何应用程序,也适用于您开始使用菜单系统的应用程序。

    这些设置特定于您运行的程序。因此,普遍设置它们不会对系统的任何其他方面带来好处。因此,我的首选方法是为该程序提供一个包装脚本,以便每次运行该脚本时,都会设置正确的设置并启动应用程序。

    • 3

相关问题

  • 什么是“$PATH”和“~/bin”?我怎样才能拥有个人脚本?

  • 在哪里声明环境变量?

  • 如何修改我的 PATH 以便在每个终端会话中都可以使用更改

  • 如何设置环境变量?

  • 在哪里可以找到有关 /etc/environment 文件格式的文档?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve