首页 > 其他分享 >export

export

时间:2023-07-31 09:15:58浏览次数:34  
标签:01 31 导出 export declare 属性

export

为shell变量或函数设置导出属性。

概要

export [-fn] [name[=word]]...
export -p

主要用途

  • 定义一到多个变量并设置导出属性。
  • 修改一到多个变量的值并设置导出属性。
  • 删除一到多个变量的导出属性。
  • 显示全部拥有导出属性的变量。
  • 为一到多个已定义函数新增导出属性。
  • 删除一到多个函数的导出属性。
  • 显示全部拥有导出属性的函数。

选项

-f:指向函数。
-n:删除变量的导出属性。
-p:显示全部拥有导出属性的变量。
-pf:显示全部拥有导出属性的函数。
-nf:删除函数的导出属性。
--:在它之后的选项无效。

参数

name(可选):变量名或已定义函数名。

value(可选):变量的值。

返回值

export返回true除非你提供了非法选项或非法名称。

例子

# 显示全部拥有导出属性的变量。
# export -p
# export
# 显示全部拥有导出属性的函数。
# export -pf
# 首先删除要演示的变量名
#unset a b
# 定义变量的同时增加导出属性
export a b=3
# 当然也可以先定义后增加导出属性
b=3
export b

# 修改拥有导出属性的变量的值
export a=5 b=7
# 当然也可以直接赋值修改
a=5;b=7

# 删除变量的导出属性
export -n a b
# 首先删除要演示的函数名
unset func_1 func_2
# 创建函数
function func_1(){ echo '123'; }
function func_2(){ echo '890'; }

# 为已定义函数增加导出属性
export -f func_1 func_2

# 删除函数的导出属性
export -fn a b
# 添加环境变量(JAVA)到`~/.bashrc`
PATH=/usr/local/jdk1.7.0/bin:$PATH
# 添加当前位置到动态库环境变量
export LD_LIBRARY_PATH=$(pwd):${LD_LIBRARY_PATH}

错误用法

  • 对未定义的函数添加导出属性。
  • 对没有导出属性的函数/变量执行删除导出属性操作。
  • -- 后使用选项。

Q&A

Q:对变量或函数设置导出属性有什么用?

A:它们会成为环境变量,可以在脚本中访问它们,尤其是脚本中调用的子进程需要时。( 参考链接4

Q:如果我编写的脚本修改了已有的环境变量的值,那么执行它会在当前终端生效吗?会影响之前以及之后打开的终端吗?

A:只有通过source方式调用的脚本会生效,您可以查看source命令获得更多信息;其他方式只是在子shell中执行。
之前的不会影响,之后的除非是修改了~/.bashrc这种启动终端时加载的脚本。( 参考链接1

Q:我脚本文件中调用~/.bashrc中定义的函数和变量。为什么在新打开的终端中通过 sh 方式调用该脚本或直接运行

这个当前用户有执行权限的脚本却不能使用这些函数和变量?
A:请在~/.bashrc文件中增加export它们的语句。另请参阅 知识点 段落。

Q:数组和关联数组也可以设置导出属性吗?

A:是可以的(如果你的bash支持它们),不过有些问题( 参考链接2 )。

Q:为什么我在查看变量或函数导出属性的时候显示的开头是declare

A:因为declare也能够设置变量或函数的导出属性,详见declare命令。

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

知识点

info bashbash在线文档
3.7.3节提到了shell执行环境,其中涉及变量和函数的内容如下

  • shell parameters that are set by variable assignment or with set or inherited from the shell’s parent in the environment
  • shell functions defined during execution or inherited from the shell’s parent in the environment

那么第一句话中的参数又和变量有什么关系呢?在3.4节第一段中提到:

A variable is a parameter denoted by a name.

变量是有名字的参数。

那么子shell确实继承了父shell中带有导出属性的变量或函数。

可参考链接: 执行脚本方式的区别

参考链接

  1. 关于bashrc profile文件的讨论
  2. 关于export数组的讨论
  3. export -pf用法
  4. 环境变量和shell变量的区别

扩展阅读

一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。查看已经存在的环境变量:

[root@localhost ~]# export
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x hostname="localhost"
declare -x INPUTRC="/etc/inputrc"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x logname="root"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"
declare -x mail="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x pwd="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.2.111 2705 22"
declare -x SSH_CONNECTION="192.168.2.111 2705 192.168.2.2 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="linux"
declare -x USER="root"

标签:01,31,导出,export,declare,属性
From: https://www.cnblogs.com/linuxcmd/p/export.html

相关文章

  • script setup lang="ts">和export default { setup() {区别是什么
    scriptsetuplang="ts">和exportdefault{setup(){区别是什么setup是Vue3新增的语法糖,可以让我们使用更简洁的代码来编写组件。它在编译时会将代码转换为使用setup函数的形式,省略了传统Vue组件中的template、data、methods等属性的定义。模板<template><......
  • Linux | export 命令
    Linuxexport命令是一个Bash命令,用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量,如PATH、PYTHONPATH等。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。语法export[-fnp][变量名称]=[变量设置值]......
  • PHP数组缓存:三种方式JSON、序列化和var_export的比较
    使用PHP的站点系统,在面对大数据量的时候不得不引入缓存机制。有一种简单有效的办法是将PHP的对象缓存到文件里。下面我来对这3种缓存方法进行说明和比较。第一种方法:JSONJSON缓存变量的方式主要是使用json_encode和json_decode两个php函数。json_encode可以将变量变成文本格式,这......
  • 链接参数export dynamic和-rdynamic的使用
    存在程序main通过dlopen使用libA中的符号:main.c:1#include<stdio.h> 2#include<dlfcn.h> 3  4typedefvoid(*func)(void);  5  6  7voidtest_main() 8{ 9  return;10}11 12 13intmain()14{15  void*handle=dlopen("./libA.so",RTLD_N......
  • Kubernetes部署Kubernetes-event-exporter
    Kubernetes部署Kubernetes-event-exporter在使用Kubernetes进行应用程序的部署和管理时,了解集群中发生的事件是非常重要的。Kubernetes事件是指与集群中的各种资源相关的状态更改。通过监视和分析这些事件,我们可以获得有关应用程序和基础设施的关键信息,从而更好地管理和维护我们的......
  • 一个mysql-exporter实现监控多个mysql容器
    一个mysql-exporter实现监控多个mysql容器在容器化的环境中,使用多个MySQL容器来支持不同的应用程序是非常常见的。在这种情况下,为了更好地监控和管理MySQL容器,我们可以使用mysql-exporter。mysql-exporter是一个开源的Prometheusexporter,它可以提供MySQL实例的性能指标和监控信......
  • node_export自定义启动监控指标
    /usr/local/bin/node_exporter--collector.ntp--collector.supervisord--collector.supervisord.url=http://localhost:9001/RPC2--collector.textfile.directory=/var/opt--collector.time--collector.cpu--collector.filesystem--collector.filefd--collector.loa......
  • NODE_EXPORTER 修改端口
    转载自:https://duanzhanpu.cn/index.php/archives/87/================== 修改prometheus中node-exporter端口因其他业务已占用9100端口,需修改为其他端口#启动时指定端口$nohup./node_exporter--web.listen-address=:7100......
  • 开发自己的Prometheus Exporter、实现自定义指标
    PrometheusExporter基础知识PrometheusExporter的概念、工作原理 PrometheusExporter是一个用来收集和暴露指标数据的工具,通过与Prometheus监控系统一起使用。它的结构包括两个组件:Collector和Exporter:Collector:用于从目标应用程序或系统收集指标并将其转化为Prometheus......
  • 前端ExportExce导出表格数据
    前端使用ExportExce导出表格数据步骤一、下载依赖[email protected]@0.14.1--save步骤二、创建一个ExportExce.js文件注意:vue中的话一般是在util文件夹下创建的nuxt的话在plugins下ExportExce.js代码如下/*eslint-disable*/import{save......