Linux入门第五节-环境变量

Linux入门第五节-环境变量

一.概念 

win上:配置环境变量可以在任何路径调用你想使用的软件,因为配置了环境变量查找时会优先在环境变量中查找;

 如.cmd输入calc调用计算器、notepad调用记事本,在环境变量path中被写入,可以在任何目录使用,许多软件都提前设置了环境变量;

二.全局变量与局部变量 

在win中系统变量和用户变量相似; 

1.全局变量

如.ls,cd,可用printenv查看、输入变量名可单独查看一个变量;

 printenv
SHELL=/bin/bash
LANGUAGE=zh_CN:zh
PWD=/home/xzw
LOGNAME=xzw
XDG_SESSION_TYPE=tty
MOTD_SHOWN=pam
HOME=/home/xzw
LANG=zh_CN.UTF-8
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=00: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:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=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:*.webm=01;35:*.webp=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:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
SSH_CONNECTION=192.168.11.1 14851 192.168.11.132 22
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_SESSION_CLASS=user
TERM=xterm-256color
LESSOPEN=| /usr/bin/lesspipe %s
USER=xzw
SHLVL=1
XDG_SESSION_ID=28
XDG_RUNTIME_DIR=/run/user/1000
SSH_CLIENT=192.168.11.1 14851 22
XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share:/usr/share:/var/lib/snapd/desktop
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
SSH_TTY=/dev/pts/0
_=/usr/bin/printenv

2.局部变量

在一个shell中临时存在,可用set查看(使用次数少)

xzw@fuck:~$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="0")
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="11")
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="5" [1]="1" [2]="16" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='5.1.16(1)-release'
COLUMNS=120
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DEFAULT_XDG_CONFIG_DIRS=/etc/xdg
DEFAULT_XDG_DATA_DIRS=/usr/local/share/:/usr/share/
DIRSTACK=()
EUID=1000
GROUPS=()
HISTCONTROL=ignoreboth
HISTFILE=/home/xzw/.bash_history
HISTFILESIZE=2000
下面还有,这里就截一段

3.输出变量与删除变量

echo $变量名;
unset 变量名(子删父不影响);

4.用户变量(下划线命名法),要小写;

1.用户变量中局部变量:
d=“干啥活”与C语言中定义一样,变量名要小写,只能在一个bash中存在;

2.用户变量中全局变量:
如.export d=“地方”,要小写变量名,只能在一个cli中临时存在,子shell中删除不影响全局;

# 局部变量
xzw@fuck:~$
xzw@fuck:~$ d='fuck'
xzw@fuck:~$ echo $d
fuck

# 全局变量
xzw@fuck:~$ export w='double'
xzw@fuck:~$ echo $w
double
xzw@fuck:~$ unset w
xzw@fuck:~$ echo $w

xzw@fuck:~$

5.系统变量(默认变量)才大写

如果安装软件时需要配置,如何配置如.
PATH=$PATH: /home/xzw/Projec

xzw@fuck:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
xzw@fuck:~$ PATH=$PATH:/home/xzw/Projec
xzw@fuck:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/xzw/Projec

三.如何永久配置

1. 启动文件

Linux开机的时候默认执行环境变量的文件;

2.启动文件有很多个,如何划分

1.登入Shell cat /etc/profile 查看系统变量,每个发行版都不一样)
2.非登入就打开Shell
3.运行脚本非交互Shell

3.如何配置

1.找到~/.bashrc(ubuntu)

xzw@fuck:~$ ll
总计 128
drwxr-xr-x 16 xzw  xzw   4096  8月 10 09:41 ./
drwxr-xr-x  3 root root  4096  7月  2 19:08 ../
drwxr-xr-x  2 xzw  xzw   4096  7月  2 19:19 公共的/
drwxr-xr-x  2 xzw  xzw   4096  7月  2 19:19 模板/
drwxr-xr-x  2 xzw  xzw   4096  7月  2 19:19 视频/
drwxr-xr-x  2 xzw  xzw   4096  7月  2 19:19 图片/
drwxr-xr-x  2 xzw  xzw   4096  7月  2 19:19 文档/
drwxr-xr-x  2 xzw  xzw   4096  7月  2 19:19 下载/
drwxr-xr-x  2 xzw  xzw   4096  7月  2 19:19 音乐/
drwxr-xr-x  3 xzw  xzw   4096  8月 10 09:56 桌面/
-rw-------  1 xzw  xzw  17804  8月 11 08:56 .bash_history
-rw-r--r--  1 xzw  xzw    220  7月  2 19:08 .bash_logout
-rw-r--r--  1 xzw  xzw   3811  7月  9 19:02 .bashrc
drwx------ 15 xzw  xzw   4096  7月 23 16:55 .cache/
drwxr-xr-x 16 xzw  xzw   4096  7月 23 16:56 .config/
drwx------  3 xzw  xzw   4096  7月  2 19:19 .gnupg/
-rw-------  1 xzw  xzw     20  8月  9 18:19 .lesshst
drwxr-xr-x  3 xzw  xzw   4096  7月  2 19:19 .local/
-rw-r--r--  1 xzw  xzw    807  7月  2 19:08 .profile
drwx------  4 xzw  xzw   4096  7月 26 09:07 snap/
-rw-r--r--  1 xzw  xzw      0  7月  2 19:31 .sudo_as_admin_successful
drwxr-xr-x  2 xzw  xzw   4096  8月 10 09:41 .vim/
-rw-------  1 xzw  xzw  18897  8月 10 09:41 .viminfo
-rw-rw-r--  1 xzw  xzw     85  7月  5 16:18 .vimrc

2.其他发行版
~ / bash_profile
~/.profile 
~ /.bash_login


3.还需要用Vim编写,我们后面会讲,别名也可以在这里配置

xzw@fuck:~$ cat .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac
省略

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi
省略

补充:Liunx中带.的都是隐藏文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
针对你的第一个问题,我理解你想了解Linux下多线程通信的流程,下面是一个简单的C/S模型的多线程通信流程图: ``` Server Client -------- -------- | main | | main | -------- -------- | | | | -------- -------- | t1 | | t1 | -------- -------- | | -------- -------- | t2 | | t2 | -------- -------- | | -------- -------- | t3 | | t3 | -------- -------- | | | | | | -------- -------- | t4 | | t4 | -------- -------- | | | | | | -------- -------- | t5 | | t5 | -------- -------- | | | | | | -------- -------- | t6 | | t6 | -------- -------- | | | | | | -------- -------- | t7 | | t7 | -------- -------- | | | | | | -------- -------- | t8 | | t8 | -------- -------- | | | | | | V V -------- -------- | IO | | IO | -------- -------- ``` 具体说明如下: 1. Server和Client进程都有一个main线程,用于启动其他线程,执行初始化等操作。 2. Server和Client进程都有多个工作线程t1-t8,用于执行具体的任务。 3. 在Server进程中,工作线程t1-t8之间可以通过共享内存、socket等方式进行通信,从而完成数据的交换。 4. 在Client进程中,工作线程t1-t8同样可以通过共享内存、socket等方式进行通信,从而完成数据的交换。 5. 在Server和Client进程中,工作线程t1-t8均可以执行IO操作,例如读写文件、发送接收网络数据等。 针对你的第二个问题,关于Linux C多线程的入门,这里给出一些简单的指导: 1. C语言中支持多线程编程的库主要包括POSIX线程库(pthread)、OpenMP、TBB等。 2. 在Linux环境下,使用pthread库进行多线程编程是比较常见的方式。该库提供了创建线程、线程同步、线程通信等功能,可以方便地实现多线程编程。 3. pthread库中常用的函数包括pthread_create、pthread_join、pthread_mutex_init、pthread_mutex_lock、pthread_cond_init等,这些函数分别用于创建线程、等待线程结束、初始化线程锁、加锁、初始化条件变量等操作。 4. 多线程编程需要注意线程安全性,避免出现竞争条件、死锁等问题。在编写多线程程序时,需要仔细考虑线程之间的数据共享和通信,以保证程序的正确性和性能。 希望以上内容对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值