Linux 基础学习

Linux 系统目录结构

登录系统后,在当前命令窗口下输入命令:

 ls / 
[root@iZ2zebqeq8f5murg3r515qZ ~]#  ls / 
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  patch  proc  root  run  sbin  srv  swapfile  sys  tmp  usr  var  www

以下是对这些目录的解释:

  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

  • /boot:
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

  • /lib
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

    这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

  • /usr
    usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

Linux 文件基本属性

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。

为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:

  • chown (change owner) : 修改所属用户与组。
  • chmod (change mode) : 修改用户的权限。

文件类型

在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@iZ2zebqeq8f5murg3r515qZ ~]# ll
total 32
drwxr-xr-x 3 root root    22 Dec 25 10:44 auto
-rw-r--r-- 1 root root 25166 Jan  5 15:36 install.sh
drwxr-xr-x 8 root root  4096 Jan 10 21:52 oneinstack

实例中,auto 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为 d 则是目录
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

文件权限

Linux中用户对文件一共有三种访问权限,分别是read(可读)、write(可写)、excute(可执行)。

例如用drwxr-xr-x.来举例,第一个字母表示文件类型,而后面的rwxr-xr-x.则表示文件权限,三个字符为一组,均为“rwx”三个参数的组合,这三个权限的位置不会改变,如果没有权限,就会出现减号-代替。

我们来看一下rwxr-xr-x表示什么意思:

  • 前三个rwx表示文件属主的权限,可读、可写、可执行。
  • 中间三个r-x表示所属用户组的权限,可读、不可写、可执行。
  • 末尾三个r-x表示其他用户的权限,可读不可写、可执行。

Linux文件属主和属组

每个文件都有一个特定的所有者,也就是对该文件具有所有权的用户。而在Linux中用户是按组来分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

[root@iZ2zebqeq8f5murg3r515qZ ~]# ll
total 32
drwxr-xr-x 3 root root    22 Dec 25 10:44 auto
-rw-r--r-- 1 root root 25166 Jan  5 15:36 install.sh
drwxr-xr-x 8 root root  4096 Jan 10 21:52 oneinstack

在以上实例中,auto文件是一个目录文件,属主和属组都为 root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。

对于 root 用户来说,一般情况下,文件的权限对其不起作用。

chown命令:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

将install.log的拥有者与群组改回为root:

[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx— 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是 770。变更权限的指令 chmod 的语法是这样的:

 chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

举例来说,如果要将 .bashrc 这个文件所有的权限都设定启用,那么命令如下:

[root@www ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

那如果要将权限变成 -rwxr-xr– 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

符号类型改变文件权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

  • user:用户
  • group:组
  • others:其他

那么我们就可以使用 u, g, o 来代表三种身份的权限。

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

chmod u g o a +(加入) -(除去) =(设定) r w x 文件或目录

如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

#  touch test1    // 创建 test1 文件
# ls -al test1    // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r  test1    // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

#  chmod  a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

chgrp命令:更改文件属组

语法:

chgrp [-R] 属组名 文件名

linux 的用户管理

Linux 中,用户保存在 /etc/passwd 中,用户密码保存在 /etc/shadow 中,用户组保存在 /etc/group 中。

添加用户

useradd <username>

useradd 可用来建立用户账号,账号建立好了之后,再用passwd 设定账号的密码,而后可用userdel 删除账号
在添加 Linux 用户之前,可以先列出现有用户,来保证不添加有冲突的用户名:

cat /etc/passwd | cut -d : -f 1
useradd testuser   # 创建新用户 testuser
useradd -d /home/mytest testuser   # -d 参数可以自定义主目录。默认情况下将在/home路径中创建一个与用户名同名的家目录
useradd -u 567 testuser   # -u 参数可以指定新用户的用户ID(UID)。默认情况下用户ID从500开始,并在添加新用户后递增
useradd -g 0 testuser   # -g 参数可以指定新用户的用户组ID。默认情况下,将分配新的用户组ID,该ID从1000开始
useradd -G group1,group2,group3 testuser   # -G 参数可以将新用户添加到多个用户组
useradd -M testuser   # -M 参数将添加没有主目录的新用户
useradd -e 2023-02-28 testuser   # -e 参数可以设置新用户的账户过期日期
chage -l testuser   # 在添加了具有帐户过期日期的用户后,可以使用chage命令检查该日期
useradd -e 023-02-28 -f 60 testuser   # -f 参数可以设置新用户的密码过期时间。如果值设为-1,密码将永不过期
useradd -c "18811372815" testuser   # -c 参数可以设置新用户的注释信息,例如添加全名、电话号码等 

设置用户密码

passwd <username>

切换用户

su <username>

su 是 switch user 的缩写,表示用户切换 。
su 命令在不加参数时,默认切换到 root 用户,输入 root 的密码后切换到 root 身份,使用 exit 退出。注意这里虽然切换到 root,但实际上并没有自动切换家目录。

su 命令加上一个 - 参数,可以切换成 root 身份,同时应用 root 的环境

su 命令加上 - 参数,可以切换成 的身份并应用 的环境。

删除用户

删除用户xm,但是要保留家目录
userdel <username>

删除用户xh以及家目录
userdel  -r <username>

查询用户信息

使用 :id 用户名

[root@iZ2zebqeq8f5murg3r515qZ ~]# id testuser
uid=1001(testuser) gid=1001(testuser) groups=1001(testuser)
  • uid:用户id号
  • gid:所在组的id号
  • groups=1001(testuser):组名

修改用户信息

usermod 命令的基本格式如下:

[root@localhost ~]#usermod [选项] 用户名

选项:
-c 用户说明:修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段;
-d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
-e 日期:修改用户的失效曰期,格式为 “YYYY-MM-DD”,即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
-g 组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID);
-u UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
-G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
-l 用户名:修改用户名称;
-L:临时锁定用户(Lock);
-U:解锁用户(Unlock),和 -L 对应;
-s shell:修改用户的登录 Shell,默认是 /bin/bash。

 usermod -c "test user" lamp   修改用户说明
 usermod -g root zhangshan   将zhangshan 用户的属组改为root

添加用户组

添加用户组的命令是 groupadd,命令格式如下:

[root@localhost ~]# groupadd [选项] 组名
选项:

-g GID:指定组 ID;
-r:创建系统群组。

查询组员

cat/etc/group

修改用户组

groupmod 命令用于修改用户组的相关信息,命令格式如下:

[root@localhost ~]# groupmod [选现] 组名

选项:
-g GID:修改组 ID;
-n 新组名:修改组名;

 [root@localhost ~]# groupmod -n testgrp group1
#把组名group1修改为testgrp

刪除用户组

groupdel 命令用于删除用户组(群组),此命令基本格式为:

[root@localhost ~]#groupdel 组名

如果有群组还是某用户的初始群组,则无法使用 groupdel 命令成功删除。如果一定要删除 temp 群组,要么修改 temp 用户的 GID,也就是将其初始组改为其他群组,要么先删除 temp 用户。

设置环境变量

设置变量值

foo=bianliang;

打印变量

[root@iZ2zebqeq8f5murg3r515qZ ~]# echo $foo
bianliang

取消变量

unset foo

查看环境变量

env/export查看环境变量

env
export

查询变量值

export命令显示当前系统定义的所有环境变量
echo $PATH命令输出当前的PATH环境变量的值

[root@iZ2zebqeq8f5murg3r515qZ ~]# export
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="10000"
declare -x HOME="/root"
declare -x HOSTNAME="iZ2zebqeq8f5murg3r515qZ"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LE_WORKING_DIR="/root/.acme.sh"
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:*.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:*.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=01;36:*.au=01;36:*.flac=01;36:*.m4a=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:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="101.68.49.41 22989 22"
declare -x SSH_CONNECTION="101.68.49.41 22989 172.22.64.46 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x S_COLORS="auto"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="347"
declare -x which_declare="declare -f"
[root@iZ2zebqeq8f5murg3r515qZ ~]#  echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
其中PATH变量定义了运行命令的查找路径,以冒号:分割不同的路径,使用export定义的时候可加双引号也可不加。

环境变量的分类

环境变量可以简单的分成用户自定义的环境变量以及系统级别的环境变量。

用户级别环境变量定义文件:~/.bashrc、~/.bash_profile
系统级别环境变量定义文件:/etc/bashrc、/etc/bash_profile、/etc/environment
另外在用户环境变量中,系统会首先读取~/.bash_profile文件,如果没有该文件则读取~/.bash_login,如果也没有该文件,则读取~/.profile,根据这些文件中内容再去读取~/.bashrc。

Linux环境变量配置方法一:export PATH

普通变量的作用域只局限于当前程序。
通过export命令,可以将普通变量升级为环境变量,环境变量就可以作用于整个操作系统内啦。

使用export命令直接修改PATH的值,配置MySQL进入环境变量的方法:

export PATH=/home/uusama/mysql/bin:$PATH
 
# 或者把PATH放在前面
export PATH=$PATH:/home/uusama/mysql/bin

生效时间:立即生效
生效期限:当前终端有效,窗口关闭后无效
生效范围:仅对当前用户有效
配置的环境变量中不要忘了加上原来的配置,即$PATH部分,避免覆盖原来配置

$PATH变量
我们在命令行下运行某个命令的时候,这个命令往往不在当前目录下,那os怎么知道去哪找这个命令呢,总不能搜索所有目录吧。

$PATH变量就是用于保存搜索目录的变量,如果输入的命令不在当前目录下,那么os就会读取$PATH变量对应的目录,依次从目录中寻找命令,如果$PATH变量对应的目录中也没有找到命令,那就说明真的没有这个命令啦

我们可以将常用的命令保存在$PATH变量中,这样就不需要进入特定的目录啦,但是注意不要覆盖系统原有的变量,否则一些系统命令就执行不了啦,比如cd命令。

所以我们一般选择在原有的$PATH上追加上我们的新环境变量。

Linux环境变量配置方法二:vim /etc/profile

不写入文件的变量或环境变量在注销shell之后就会失效,如果想要变量一直保留,就要写入配置文件
/etc/profile是系统的变量配置文件,被所有用户共享。

# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/profile

vim /etc/profile

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

source或.使配置文件立即生效
由于变量配置文件只会在shell启动的时候读取一次,所以如果不想退出当前shell的话,要用source或.命令主动读取配置文件并生效。

source /etc/profile

生效时间:新开终端生效,或者手动source /etc/profile生效
生效期限:永久有效
生效范围:对所有用户有效

Linux环境变量配置方法三:vim ~/.bashrc

通过修改用户目录下的~/.bashrc文件进行配置:

vim ~/.bashrc

在最后一行加上

export PATH=$PATH:/home/uusama/mysql/bin

生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效\

Linux环境变量配置方法四:vim ~/.bash_profile

和修改~/.bashrc文件类似,也是要在文件最后加上新的路径即可:

vim ~/.bash_profile

在最后一行加上

export PATH=$PATH:/home/uusama/mysql/bin

生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bash_profile生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果没有/.bash_profile文件,则可以编辑/.profile文件或者新建一个

Linux环境变量配置方法五:vim /etc/bashrc

该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限:

如果/etc/bashrc文件不可编辑,需要修改为可编辑

chmod -v u+w /etc/bashrc
 
vim /etc/bashrc

在最后一行加上

export PATH=$PATH:/home/uusama/mysql/bin

生效时间:新开终端生效,或者手动source /etc/bashrc生效
生效期限:永久有效
生效范围:对所有用户有效

Linux环境变量配置方法六:vim /etc/environment

该方法是修改系统环境配置文件,需要管理员权限或者对该文件的写入权限:

如果/etc/bashrc文件不可编辑,需要修改为可编辑

chmod -v u+w /etc/environment
vim /etc/profile

在最后一行加上

export PATH=$PATH:/home/uusama/mysql/bin

生效时间:新开终端生效,或者手动source /etc/environment生效
生效期限:永久有效
生效范围:对所有用户有效