Linux_ set/env/export 之间的关系 与 区别

本文介绍了Linux环境下set、env和export三个命令的区别与用法,并通过实例演示如何设置和使用环境变量,帮助读者理解这些命令在实际操作中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

set/env/export区别

简记:

set 用来显示本地变量, 环境变量

env 用来显示环境变量

export 用来显示和设置环境变量


set 显示当前shell的变量(本地变量),包括当前用户的变量( 环境变量)

env 显示当前用户的变量  (环境变量)

export 显示当前导出成用户变量的shell变量 (环境变量)


延伸 ----- :)

        每个shell有自己特有的变量,这个和用户变量是不同的,

当前用户变量和你用什么shell无关,不管你用什么shell都在

,比如HOME,SHELL等这些变量。


      但shell自己的变量不同,比如BASH_ARGC, BASH等,

这些变量只有set才会显示,是bash特有的。


      export不加参数的时候,显示哪些变量被导出成了用户变量,

因为一个shell自己的变量可以通过export "导出" 变成一个用户变量。




首先分别执行这三条指令:


set

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.1.2(1)-release'
CLASSPATH=.:/usr/local/java_home/jdk1.8.0_162/lib/dt.jar:/usr/local/java_home/jdk1.8.0_162/lib/tools.jar
COLORS=/etc/DIR_COLORS
COLUMNS=137
CPPFLAGS=-I/usr/local/zeromq/include/
CVS_RSH=ssh
DIRSTACK=()
EDITOR=/usr/bin/vim
EUID=0
GROUPS=()
G_BROKEN_FILENAMES=1
HADOOP_COMMON_HOME=/usr/local/hadoop
HADOOP_COMMON_LIB_NATIVE_DIR=/usr/local/hadoop/lib/native
HADOOP_HDFS_HOME=/usr/local/hadoop
HADOOP_HOME=/usr/local/hadoop
HADOOP_INSTALL=/usr/local/hadoop
HADOOP_MAPRED_HOME=/usr/local/hadoop
HISTCONTROL=ignoredups
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HIVE_CONF_DIR=/usr/local/hive/conf
HIVE_HOME=/usr/local/hive
HOME=/root
HOSTNAME=master
HOSTTYPE=x86_64
ID=0
IFS=$' \t\n'
JAVA_HOME=/usr/local/java_home/jdk1.8.0_162
KDEDIRS=/usr
KDE_IS_PRELINKED=1
LANG=zh_CN.UTF-8
LDFLAGS=-L/usr/local/zeromq/lib/
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LINES=34
LOGNAME=root
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:'
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/spool/mail/root
MAILCHECK=60
MONGODB_HOME=/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9
OLDPWD=/usr/local/hadoop
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/redis/redis-4.0.1/bin:/usr/local/storm/apache-storm-1.0.1/bin:/usr/local/spark/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/scala_home/scala-2.12.4/bin:/usr/local/java_home/jdk1.8.0_162/bin:/usr/local/redis/redis-4.0.1/bin:/usr/local/storm/apache-storm-1.0.1/bin:/usr/local/spark/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/scala_home/scala-2.12.4/bin:/usr/local/java_home/jdk1.8.0_162/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/git/bin/::/usr/local/nginx/sbin:/usr/local/zookeeper/zookeeper-3.4.5/bin/:/usr/local/kafka/kafka_2.11-0.10.0.1/bin/:/usr/local/kafka/:/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9/bin/:/usr/local/cassandra/apache-cassandra-2.1.15/bin/:/root/bin:/usr/local/git/bin/::/usr/local/nginx/sbin:/usr/local/zookeeper/zookeeper-3.4.5/bin/:/usr/local/kafka/kafka_2.11-0.10.0.1/bin/:/usr/local/kafka/:/usr/local/hive/bin:/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9/bin/:/usr/local/cassandra/apache-cassandra-2.1.15/bin/
PIPESTATUS=([0]="0")
PPID=3792
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
PS1='[\u@\h \W]\$ '
PS2='> '
PS4='+ '
PWD=/usr/local
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
QTLIB=/usr/lib64/qt-3.3/lib
REDIS_HOME=/usr/local/redis/redis-4.0.1
SCALA_HOME=/usr/local/scala_home/scala-2.12.4
SELINUX_LEVEL_REQUESTED=
SELINUX_ROLE_REQUESTED=
SELINUX_USE_CURRENT_RANGE=
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
SPARK_HOME=/usr/local/spark
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SSH_CLIENT='192.168.75.1 59593 22'
SSH_CONNECTION='192.168.75.1 59593 192.168.75.128 22'
SSH_TTY=/dev/pts/0
STORM_HOME=/usr/local/storm/apache-storm-1.0.1
TERM=xterm
UID=0
USER=root
YARN_HOME=/usr/local/hadoop
ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.5
_=clear
aaa=bbb
colors=/etc/DIR_COLORS
__udisks () 
{ 
    local IFS='
';
    local cur="${COMP_WORDS[COMP_CWORD]}";
    if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--show-info" ]; then
        COMPREPLY=($(compgen -W "$(udisks --enumerate-device-files)" -- $cur));
    else
        if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--inhibit-polling" ]; then
            COMPREPLY=($(compgen -W "$(udisks --enumerate-device-files)" -- $cur));
        else
            if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--mount" ]; then
                COMPREPLY=($(compgen -W "$(udisks --enumerate-device-files)" -- $cur));
            else
                if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--unmount" ]; then
                    COMPREPLY=($(compgen -W "$(udisks --enumerate-device-files)" -- $cur));
                else
                    if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--detach" ]; then
                        COMPREPLY=($(compgen -W "$(udisks --enumerate-device-files)" -- $cur));
                    else
                        if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--ata-smart-refresh" ]; then
                            COMPREPLY=($(compgen -W "$(udisks --enumerate-device-files)" -- $cur));
                        else
                            if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--ata-smart-simulate" ]; then
                                _filedir || return 0;
                            else
                                if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--set-spindown" ]; then
                                    COMPREPLY=($(compgen -W "$(udisks --enumerate-device-files)" -- $cur));
                                else
                                    if [ "${COMP_WORDS[$(($COMP_CWORD - 1))]}" = "--poll-for-media" ]; then
                                        COMPREPLY=($(compgen -W "$(udisks --enumerate-device-files)" -- $cur));
                                    else
                                        COMPREPLY=($(IFS=: compgen -W "--dump:--inhibit-polling:--inhibit-all-polling:--enumerate:--enumerate-device-files:--monitor:--monitor-detail:--show-info:--help:--mount:--mount-fstype:--mount-options:--unmount:--unmount-options:--detach:--detach-options:--ata-smart-refresh:--ata-smart-wakeup:--ata-smart-simulate:--set-spindown:--set-spindown-all:--spindown-timeout:--poll-for-media" -- $cur));
                                    fi;
                                fi;
                            fi;
                        fi;
                    fi;
                fi;
            fi;
        fi;
    fi
}


env

LDFLAGS=-L/usr/local/zeromq/lib/
SPARK_HOME=/usr/local/spark
HOSTNAME=master
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HADOOP_HOME=/usr/local/hadoop
HISTSIZE=1000
CPPFLAGS=-I/usr/local/zeromq/include/
SSH_CLIENT=192.168.75.1 59593 22
SELINUX_USE_CURRENT_RANGE=
MONGODB_HOME=/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9
QTDIR=/usr/lib64/qt-3.3
OLDPWD=/usr/local/hadoop
QTINC=/usr/lib64/qt-3.3/include
SSH_TTY=/dev/pts/0
STORM_HOME=/usr/local/storm/apache-storm-1.0.1
YARN_HOME=/usr/local/hadoop
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
HADOOP_COMMON_LIB_NATIVE_DIR=/usr/local/hadoop/lib/native
MAIL=/var/spool/mail/root
PATH=/usr/local/redis/redis-4.0.1/bin:/usr/local/storm/apache-storm-1.0.1/bin:/usr/local/spark/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/scala_home/scala-2.12.4/bin:/usr/local/java_home/jdk1.8.0_162/bin:/usr/local/redis/redis-4.0.1/bin:/usr/local/storm/apache-storm-1.0.1/bin:/usr/local/spark/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/scala_home/scala-2.12.4/bin:/usr/local/java_home/jdk1.8.0_162/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/git/bin/::/usr/local/nginx/sbin:/usr/local/zookeeper/zookeeper-3.4.5/bin/:/usr/local/kafka/kafka_2.11-0.10.0.1/bin/:/usr/local/kafka/:/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9/bin/:/usr/local/cassandra/apache-cassandra-2.1.15/bin/:/root/bin:/usr/local/git/bin/::/usr/local/nginx/sbin:/usr/local/zookeeper/zookeeper-3.4.5/bin/:/usr/local/kafka/kafka_2.11-0.10.0.1/bin/:/usr/local/kafka/:/usr/local/hive/bin:/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9/bin/:/usr/local/cassandra/apache-cassandra-2.1.15/bin/
HADOOP_HDFS_HOME=/usr/local/hadoop
HIVE_HOME=/usr/local/hive
HADOOP_COMMON_HOME=/usr/local/hadoop
PWD=/usr/local
JAVA_HOME=/usr/local/java_home/jdk1.8.0_162
EDITOR=/usr/bin/vim
HADOOP_INSTALL=/usr/local/hadoop
LANG=zh_CN.UTF-8
KDE_IS_PRELINKED=1
KDEDIRS=/usr
ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.5
SELINUX_LEVEL_REQUESTED=
REDIS_HOME=/usr/local/redis/redis-4.0.1
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
HADOOP_MAPRED_HOME=/usr/local/hadoop
LOGNAME=root
QTLIB=/usr/lib64/qt-3.3/lib
CVS_RSH=ssh
CLASSPATH=.:/usr/local/java_home/jdk1.8.0_162/lib/dt.jar:/usr/local/java_home/jdk1.8.0_162/lib/tools.jar
SSH_CONNECTION=192.168.75.1 59593 192.168.75.128 22
aaa=bbb
LESSOPEN=||/usr/bin/lesspipe.sh %s
SCALA_HOME=/usr/local/scala_home/scala-2.12.4
G_BROKEN_FILENAMES=1
HIVE_CONF_DIR=/usr/local/hive/conf
_=/bin/env


export

declare -x CLASSPATH=".:/usr/local/java_home/jdk1.8.0_162/lib/dt.jar:/usr/local/java_home/jdk1.8.0_162/lib/tools.jar"
declare -x CPPFLAGS="-I/usr/local/zeromq/include/"
declare -x CVS_RSH="ssh"
declare -x EDITOR="/usr/bin/vim"
declare -x G_BROKEN_FILENAMES="1"
declare -x HADOOP_COMMON_HOME="/usr/local/hadoop"
declare -x HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native"
declare -x HADOOP_HDFS_HOME="/usr/local/hadoop"
declare -x HADOOP_HOME="/usr/local/hadoop"
declare -x HADOOP_INSTALL="/usr/local/hadoop"
declare -x HADOOP_MAPRED_HOME="/usr/local/hadoop"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HIVE_CONF_DIR="/usr/local/hive/conf"
declare -x HIVE_HOME="/usr/local/hive"
declare -x HOME="/root"
declare -x HOSTNAME="master"
declare -x JAVA_HOME="/usr/local/java_home/jdk1.8.0_162"
declare -x KDEDIRS="/usr"
declare -x KDE_IS_PRELINKED="1"
declare -x LANG="zh_CN.UTF-8"
declare -x LDFLAGS="-L/usr/local/zeromq/lib/"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x MONGODB_HOME="/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9"
declare -x OLDPWD="/usr/local/hadoop"
declare -x PATH="/usr/local/redis/redis-4.0.1/bin:/usr/local/storm/apache-storm-1.0.1/bin:/usr/local/spark/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/scala_home/scala-2.12.4/bin:/usr/local/java_home/jdk1.8.0_162/bin:/usr/local/redis/redis-4.0.1/bin:/usr/local/storm/apache-storm-1.0.1/bin:/usr/local/spark/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/scala_home/scala-2.12.4/bin:/usr/local/java_home/jdk1.8.0_162/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/git/bin/::/usr/local/nginx/sbin:/usr/local/zookeeper/zookeeper-3.4.5/bin/:/usr/local/kafka/kafka_2.11-0.10.0.1/bin/:/usr/local/kafka/:/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9/bin/:/usr/local/cassandra/apache-cassandra-2.1.15/bin/:/root/bin:/usr/local/git/bin/::/usr/local/nginx/sbin:/usr/local/zookeeper/zookeeper-3.4.5/bin/:/usr/local/kafka/kafka_2.11-0.10.0.1/bin/:/usr/local/kafka/:/usr/local/hive/bin:/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.9/bin/:/usr/local/cassandra/apache-cassandra-2.1.15/bin/"
declare -x PWD="/usr/local"
declare -x QTDIR="/usr/lib64/qt-3.3"
declare -x QTINC="/usr/lib64/qt-3.3/include"
declare -x QTLIB="/usr/lib64/qt-3.3/lib"
declare -x REDIS_HOME="/usr/local/redis/redis-4.0.1"
declare -x SCALA_HOME="/usr/local/scala_home/scala-2.12.4"
declare -x SELINUX_LEVEL_REQUESTED=""
declare -x SELINUX_ROLE_REQUESTED=""
declare -x SELINUX_USE_CURRENT_RANGE=""
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SPARK_HOME="/usr/local/spark"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_CLIENT="192.168.75.1 59593 22"
declare -x SSH_CONNECTION="192.168.75.1 59593 192.168.75.128 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x STORM_HOME="/usr/local/storm/apache-storm-1.0.1"
declare -x TERM="xterm"
declare -x USER="root"
declare -x YARN_HOME="/usr/local/hadoop"
declare -x ZOOKEEPER_HOME="/usr/local/zookeeper/zookeeper-3.4.5"
declare -x aaa="bbb"



接下来再做几个实验 :

首先我们查看下 

set 显示当前shell的变量(本地变量),包括当前用户的变量( 环境变量)

env 显示当前用户的变量  (环境变量)

export 显示当前导出成用户变量的shell变量 (环境变量)

对于 set, env,  export 是否 有 ccc 这个变量。


[root@master local]# set | grep ccc
[root@master local]# env | grep ccc
[root@master local]# export | grep ccc



设置 本地变量(shell 变量)

ccc=bbb



再次检验对 set, env,  export  来说 ccc 变量是否设置成功

[root@master local]# set | grep ccc
ccc=bbb
[root@master local]# env | grep ccc
[root@master local]# export | grep ccc



再用echo 输出下 本地变量 ccc

[root@master local]# echo $ccc
bbb



利用export 将 shell 变量(本地变量) 声明为 环境变量

[root@master local]# export ccc



再用 set , env , export 看下 ccc 变量 的 作用域

[root@master local]# set | grep ccc
ccc=bbb
[root@master local]# env | grep ccc
ccc=bbb
[root@master local]# export | grep ccc
declare -x ccc="bbb"




背景资料 :


set、env、export——Linux中的环境变量命令


Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境 变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。


什么是环境变量


环境变量是一个具有 特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。许多用户(特别是那些刚接触Linux的新手)发现这些变量有些怪异或者难以控制。其实,这是个误会:通过使用环境变量,你可以很容易的修改一个牵涉到一个或多个应用程序的配置信息。


常见的环境变量


对于 PATH和HOME等环境变量大家都不陌生。

PATH能够指定命令的搜索路径,那么动态链接库的路径用什么变量指定呢?或者就是在 PATH里面?
比如有一个程序需要/usr/local/lib下面的一个库文件,应该怎么指定其路径呢?
经常看到有些变量如 LD_LIBRARY_PATH,LIBPATH,CLASSPATH等,他们之间有什么不同和关系?


除此之外,还有下面一些常见环境变 量。

◆ HISTSIZE是指保存历史命令记录的条数。

◆ LOGNAME是指当前用户的登录名。

◆ HOSTNAME是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。

◆ SHELL是指当前用户用的是哪种Shell。

◆ LANG/LANGUGE是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

◆ MAIL是指当前用户的邮件存放目录。

◆ PS1是基本提示符,对于root用户是#,对于普通用户是$。PS2是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比 如下列命令会将提示符修改成字符串“Hello,My NewPrompt  ”。




<think>我们正在解决一个特定的错误:`bash: /usr/local/arm_linux_4.8/bin/ldd: No such file or directory`。这个错误发生在尝试使用交叉编译工具链中的`ldd`命令时。根据引用内容,我们可以从几个方面来分析: 1. **文件是否存在**:首先检查`/usr/local/arm_linux_4.8/bin/ldd`这个文件是否存在。如果不存在,可能是工具链安装不完整。 2. **文件格式问题**:如果文件存在,可能是文件格式问题(如DOS格式UNIX格式的差异)导致解释器无法识别,从而报错。引用[2]和引用[4]提到了由于行尾符不同(`^M`)导致的`bad interpreter`错误。 3. **解释器路径错误**:引用[3]展示了当脚本首行的解释器路径指向一个不存在的解释器时,也会出现类似错误。交叉编译工具链中的`ldd`实际上是一个脚本,其首行指定了解释器(如`#!/bin/bash`),如果该解释器在系统中不存在或者路径不对,就会报错。 ### 解决步骤 #### 步骤1:检查文件是否存在 ```bash ls -l /usr/local/arm_linux_4.8/bin/ldd ``` 如果文件不存在,需要重新安装交叉编译工具链,并确保安装完整。 #### 步骤2:检查文件格式(如果文件存在) 使用`vi`查看文件格式: ```bash vi /usr/local/arm_linux_4.8/bin/ldd ``` 在命令模式下输入: ``` :set ff? ``` - 如果显示`fileformat=dos`,则需要转换为UNIX格式: ``` :set ff=unix :wq ``` 或者使用`dos2unix`命令: ```bash dos2unix /usr/local/arm_linux_4.8/bin/ldd ``` #### 步骤3:检查脚本首行的解释器路径 使用`vi`打开`ldd`脚本: ```bash vi /usr/local/arm_linux_4.8/bin/ldd ``` 查看第一行,例如: ``` #!/bin/bash ``` 或者可能是: ``` #!/usr/bin/env bash ``` 确保该解释器在系统中存在。如果指定的解释器路径不正确,需要修改为正确的路径。 检查`/bin/bash`是否存在: ```bash ls -l /bin/bash ``` 如果不存在,可能需要安装`bash`或者创建符号链接。 #### 步骤4:检查文件权限 确保`ldd`脚本具有可执行权限: ```bash chmod +x /usr/local/arm_linux_4.8/bin/ldd ``` #### 步骤5:检查依赖库(针对交叉编译环境) 交叉编译工具链中的命令可能依赖于特定的库,使用`file`命令查看`ldd`文件的类型: ```bash file /usr/local/arm_linux_4.8/bin/ldd ``` 如果它是动态链接的可执行文件,那么需要确保它所依赖的库在系统中可用。但是,由于这是一个交叉编译工具链,它可能依赖于工具链自身的库。你可以尝试设置`LD_LIBRARY_PATH`: ```bash export LD_LIBRARY_PATH=/usr/local/arm_linux_4.8/lib:$LD_LIBRARY_PATH ``` 然后再次尝试运行`ldd`。 ### 其他可能的原因 - **工具链当前系统不兼容**:交叉编译工具链可能是为另一个架构(如32位)编译的,而你的系统是64位。可以尝试安装32位兼容库(例如,在Ubuntu上安装`libc6-i386`): ```bash sudo apt-get install libc6-i386 ``` - **工具链本身的问题**:如果工具链安装不完整或损坏,重新下载并安装工具链可能是最简单的解决方案。 ### 总结 1. 确认文件存在。 2. 转换文件格式为UNIX格式。 3. 确保解释器路径正确且解释器存在。 4. 添加可执行权限。 5. 设置必要的库路径或安装兼容库。 如果以上步骤都不能解决问题,请考虑重新安装交叉编译工具链。 §§相关问题§§ 1. 如何检查交叉编译工具链是否安装正确? 2. 如何解决交叉编译工具链中的命令依赖库缺失问题? 3. 如何在64位系统上运行32位的交叉编译工具链? 4. 如何设置交叉编译工具链的环境变量?</think>### 解决 `bash: /usr/local/arm_linux_4.8/bin/ldd: No such file or directory` 错误 #### 问题分析 这个错误通常发生在交叉编译环境中,可能由以下原因导致: 1. **文件格式问题**:`ldd` 脚本包含 DOS 格式的换行符(`^M`) 2. **解释器路径错误**:脚本首行的解释器路径(shebang)指向不存在的解释器 3. **文件权限问题**:缺少可执行权限 4. **依赖库缺失**:工具链依赖的库未正确安装 --- ### 解决方法 #### 步骤1:检查文件格式(处理 DOS 换行符) ```bash # 查看文件格式 file /usr/local/arm_linux_4.8/bin/ldd # 转换 DOS 格式为 UNIX 格式 sudo dos2unix /usr/local/arm_linux_4.8/bin/ldd # 或使用 sed 删除 ^M 字符 sudo sed -i 's/\r$//' /usr/local/arm_linux_4.8/bin/ldd ``` #### 步骤2:验证解释器路径 ```bash # 查看脚本首行解释器路径 head -1 /usr/local/arm_linux_4.8/bin/ldd # 检查解释器是否存在 ls -l /path/to/interpreter # 替换为实际路径 # 修正解释器路径(示例) sudo sed -i '1s|.*|#!/bin/bash|' /usr/local/arm_linux_4.8/bin/ldd ``` #### 步骤3:检查文件权限 ```bash # 添加可执行权限 sudo chmod +x /usr/local/arm_linux_4.8/bin/ldd # 验证权限 ls -l /usr/local/arm_linux_4.8/bin/ldd # 应显示:-rwxr-xr-x ``` #### 步骤4:检查依赖库 ```bash # 检查 ldd 的依赖 file /usr/local/arm_linux_4.8/bin/ldd # 如果是 ELF 文件,检查依赖库 readelf -d /usr/local/arm_linux_4.8/bin/ldd | grep NEEDED # 安装缺失的 32 位库(x86_64 系统需要) sudo apt-get install libc6:i386 libstdc++6:i386 ``` #### 步骤5:验证工具链完整性 ```bash # 检查整个工具链目录 ls -l /usr/local/arm_linux_4.8/bin # 验证其他工具是否正常 /usr/local/arm_linux_4.8/bin/arm-linux-gcc --version ``` #### 步骤6:环境变量配置 确保在 `.bashrc` 中包含: ```bash export PATH="/usr/local/arm_linux_4.8/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/arm_linux_4.8/lib:$LD_LIBRARY_PATH" ``` 执行 `source ~/.bashrc` 使配置生效 --- ### 常见问题排查 1. **工具链架构不匹配**: ```bash # 检查工具链架构 /usr/local/arm_linux_4.8/bin/arm-linux-readelf -h /usr/local/arm_linux_4.8/bin/ldd # 安装对应架构支持库 sudo apt-get install gcc-multilib ``` 2. **文件损坏**: ```bash # 重新下载工具链 wget https://example.com/toolchain.tar.gz tar xvf toolchain.tar.gz -C /usr/local/ ``` 3. **符号链接问题**: ```bash # 检查 ldd 实际指向 ls -l /usr/local/arm_linux_4.8/bin/ldd # 重建符号链接 sudo ln -sf /usr/local/arm_linux_4.8/bin/arm-linux-ldd /usr/local/arm_linux_4.8/bin/ldd ``` > **提示**:使用 `strace` 诊断执行过程: > ```bash > strace /usr/local/arm_linux_4.8/bin/ldd > ``` --- ### 验证修复 ```bash # 检查版本信息 /usr/local/arm_linux_4.8/bin/ldd --version # 测试简单程序 echo 'int main(){return 0;}' > test.c /usr/local/arm_linux_4.8/bin/arm-linux-gcc test.c /usr/local/arm_linux_4.8/bin/ldd a.out ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值