【Linux】(7)which-PATH变量

目录

一、命令的查找

        1.1 which

        1.1.1 获取命令程序源代码

        1.1.2 二进制文件和源代码文件的关系

        1.1.3 练习

        1.2 PATH变量

        1.2.1【思考】如何让which命令可以找到我们自己编译的hello二进制程序

        1.2.2 PATH变量无效时怎么办

        1.2.3 永久修改PATH变量

二、如何直接执行python脚本

        2.1 方法一

        2.2 方法二


一、命令的查找

Linux的每一个命令都是一个程序,基本都是C语言编写的,命令运行启动就是一个进程

进程:运行起来的程序代码

        1.1 which

是查找Linux里的命令的存放工具,只会找到PATH变量定义的路径下查找,如果不在PATH变量定义的路径里,which将无法找到。

        1.1.1 获取命令程序源代码

man mkdir 查看mkdir的使用手册,可以看到mkdir的源代码地址

curl -O (链接地址) 在Linux里下载

curl是linux里的字符界面的浏览器

-O 下载使用的选项,下载后的文件存放在当前目录下

tar xf (压缩文件名) 解压文件(.tar.gz的文件是Linux里的压缩文件)

进入解压后的目录后cd src 就是进入存放源代码的目录,其中.c的文件就是用C语言写的源代码

        1.1.2 二进制文件和源代码文件的关系

二进制文件相当于可以直接使用的产品,而源代码相当于产品的原材料

编译:按照某种编码进行翻译,将人能识别的代码翻译成机器可以识别的代码。编译后形成的文件叫二进制文件。

c语言属于编译型语言,需要编译。每次修改了源代码,都需要重新编译,并且编译后的二进制代码执行时与源代码无关。

python属于解释型语言不需要编译。需要一行一行的代码去解释器里执行,程序执行时和源代码有关

        1.1.3 练习

自己编写一个hello.c的源代码文件,功能:是输出一个hello,world,your name

1.编写源代码hello.c

include ==>导入头函数

int main() ==>定义一个主函数

return 0; ==>函数的返回值为0


[root@192 lianxi]# mkdir cmd
[root@192 lianxi]# cd cmd
[root@192 cmd]# vim hello.c
[root@192 cmd]# cat hello.c
#include<stdio.h>

int main()
{
        printf("hello,world\n");
        printf("I'm lihua\n");
        return 0;

}

2.安装gcc编译器

[root@192 cmd]# yum install gcc -y

3.使用gcc将c语言的源代码编译成二进制文件

gcc 是Linux里的C语言编译器

-o 选项:输出二进制文件

hello 产生的二进制文件

hello.c 为源代码文件

[root@192 cmd]# gcc -o hello hello.c
[root@192 cmd]# ls
hello  hello.c

4.执行(运行)二进制程序

[root@192 cmd]# ./hello   #运行当前目录下的hello程序
hello,world
I'm lihua

【例】如果不在PATH变量定义的路径里,which将无法找到。

[root@192 cmd]# which hello
/usr/bin/which: no hello in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

        1.2 PATH变量

Linux查询命令的时候默认会到PATH变量定义的文件夹下查找

env 是Linux里查看环境变量的命令

grep 过滤命令:可以根据字符串去匹配需要查找的内容,如果匹配到就显示整行的内容到屏幕,如果没有找到,就不显示

[root@192 cmd]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@192 cmd]# env|grep PATH  #查询定义的PATH变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@192 cmd]# cat hello.c |grep lihua   #从hello.c文件里查找包含lihua的一行
        printf("I'm lihua\n");

        1.2.1【思考】如何让which命令可以找到我们自己编译的hello二进制程序

第一种:将hello文件的地址添加到PATH变量(改变PATH变量)

[root@192 cmd]# pwd
/root/lianxi/cmd
[root@192 cmd]# PATH=$PATH:/root/lianxi/cmd  #!注意一定要写$符号,否则PATH变量将被破坏,许多命令将无法使用
[root@192 cmd]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/lianxi/cmd
[root@192 cmd]# which hello
/root/lianxi/cmd/hello
[root@192 cmd]# hello   到PATH变量中查找hello,然后执行,和目前在哪个目录没关系
hello,world
I'm lihua
[root@192 cmd]# ./hello   执行当前目录下的hello
hello,world
I'm lihua


第二种:将lihua文件直接移到/usr/bin(顺应PATH变量)

[root@192 cmd]# gcc -o lihua hello.c
[root@192 cmd]# ls
hello  hello.c  lihua
[root@192 cmd]# mv lihua /usr/bin
[root@192 cmd]# ls
hello  hello.c
[root@192 cmd]# which lihua
/usr/bin/lihua
[root@192 cmd]# lihua
hello,world
I'm lihua

        1.2.2 PATH变量无效时怎么办

  1. 重新定义PATH变量
  2. 因为上述修改方法为临时修改,重启系统后即可恢复正常

        1.2.3 永久修改PATH变量

修改/root/.bash_profile ==>写到文件里

[root@192 cmd]# vim /root/.bash_profile

二、如何直接执行python脚本

        2.1 方法一

添加别名

alias sanchuang=python3 sanchuang.py

        2.2 方法二

将程序放到PATH变量的目录下,并给程序可执行权限,需要指定解释器

1.复制sanchuang.py 到sanchuang


[root@192 cmd]# cp sanchuang.py sanchuang
[root@192 cmd]# python3 sanchuang

2.给予sanchuang可执行权限

r 代表读权限 read

w 代表写权限 write

x 代表执行权限 execute


[root@192 cmd]# chmod +x sanchuang
[root@192 cmd]# ls
hello  hello.c  sanchuang  sanchuang.py
[root@192 cmd]# ll
总用量 24
-rwxr-xr-x. 1 root root 8360 2月  16 18:37 hello
-rw-r--r--. 1 root root   96 2月  16 18:27 hello.c
-rwxr-xr-x. 1 root root  188 2月  16 20:33 sanchuang
-rw-r--r--. 1 root root  188 2月  16 20:29 sanchuang.py

3.在脚本添加声明默认的解释器是python3

#!/usr/bin/python3 声明本脚本程序默认使用的解释器是/usr/bin/python

[root@192 cmd]# cat sanchuang.py
#!/usr/bin/python3

name = input("请输入你的名字:")
passwd = input("请输入你的密码:")

print(f"欢迎登录三创系统,你的名字为{name},你的密码为{passwd}")

4.修改PATH变量或者将sanchuang复制到PATH变量的目录下

[root@192 cmd]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/lianxi/cmd

【结果】

[root@192 cmd]# sanchuang
请输入你的名字:lihua
请输入你的密码:1234
欢迎登录三创系统,你的名字为lihua,你的密码为1234

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值