放入路径

回忆上次内容

  • 我们要在任意路径下直接执行 sleep.py

    • sleep.py 放在 /usr/bin/ 下面
    • 最终可以在任意位置执行程序sleep.py
  • 但是

    • /usr/bin 里面放的一般都是二进制命令文件
    • 命令实在是太多太乱
    • 最终还是删除了sleep.py
  • 我想

    • 把宿主目录添加到系统变量 $PATH

编辑

  • 这样有可能吗?
  • 先回忆

    • 为什么无论当前路径在哪里
    • ls都能执行

路径

编辑

  • ls所在的路径是/usr/bin

    • 是在系统变量$PATH中的
#!/usr/bin/python3
import time
while True:
print(time.asctime())
time.sleep(1)
  • 现在只要把sleep.py

    • 所在的文件夹目录

      • /home/shiyanlou
    • 也放到$PATH
    • 就可以随地调用其中的sleep.py了

修改 PATH

编辑

#查看当前$PATH
echo $PATH
#设置$PATH,注意不要加空格
export PATH=~:$PATH
#查看更新后的$PATH
echo $PATH
  • export PATH=~:$PATH

    • 前面的 PATH 不需要$
    • ~是当前用户 shiyanlou 的用户文件夹

      • 也就是/home/shiyanlou
    • :是分隔符号

具体效果

  • 注意!!!

    • PATH必须大写

      • $PATH$path是两回事
    • 输入的时候千万注意不能使用中文标点!!!

      • 包括:~都必须是英文半角

编辑

  • 修改后主要是

    • 在老$PATH(黄色)之后
    • 增加了~(红色)

      • 当前用户文件夹(~)
      • 也就是shiyanlou的用户文件夹
      • /home/shiyanlou
    • 增加后的结果就是新$PATH

      • 就在蓝色方框内
  • /home/shiyanlou 下有 sleep.py

    • 这回能运行么

尝试运行

  • 原来根本找不到的sleep.py

编辑

  • 现在说的是权限不够

    • 说明可以找到了
    • 虽然由于权限问题不能运行
  • 这说明

    • shiyanlou的宿主目录已经进入系统路径$PATH了
    • 只是权限不够
    • 还是需要给当前用户执行权限

编辑

  • chmod u+x sleep.py

    • sleep.py的owner是shiyanlou
    • shiyanlou就是当前用户
    • 给当前用户增加执行权限(execute)
  • 然后再尝试运行python.py

成功运行

编辑

  • sleep.py确实直接运行了!

    • 换个路径也可以么?

执行过程

  • 换个路径也能找到sleep.py

编辑

  • 在内存中运行的python3

    • 解释执行 sleep.py
    • 每隔 1s 输出一次时间
    • ctrl+c结束进程
  • 但是关闭当前终端
  • 重新打开新的 xfce终端

    • 这个新$PATH就失效了
    • sleep.py也找不到了

编辑

  • 这可怎么办呢?

重启终端过程

  • 新开一个终端之后

编辑

  • $PATH 就回到了最初

    • 不包含/home/shiyanlou了
    • 找不到 sleep.py 了
  • 我希望每次新打开 terminal

    • 就自动把 $PATH 设置好
  • 应该怎么办?

终端初始化

  • 研究一下终端的初始化过程
  • 当我们运行某个shell文件的时候

    • 首先会运行shell的rc文件
    • rc也就是 run command 配置文件
  • shiyanlou的 默认shell 是 zsh

    • 对应的 rc文件 就是 ~/.zshrc
    • 试着编辑他
    • vi ~/.zshrc

      • G到最后一行
      • o 在下方插入一个新行并进入编辑模式
      • 试着加一行输出

编辑

再新开终端

  • 然后重新打开一个xfce终端

编辑

  • 这说明新开终端的时候就会执行

    • ~/.zshrc
    • 因为我们默认的shell是zsh
  • 如果默认的shell不是zsh

    • 而是bash
  • 会如何呢?

~/.bashrc

  • zsh对应的rc文件是~/.zshrc
  • bash对应的 rc文件是~/.bashrc

    • 试着编辑他
    • vi ~/.bashrc

      • G到最后一行
      • o 在下方插入一个新行并进入编辑模式
      • 试着再加一行输出

编辑

  • 切换shell的时候会有相应的提示

编辑

  • 既然如此
  • 我们可以把export PATH=$PATH:~这句话

    • 放在默认的shell(zsh)的配置文件(~/.zshrc)中
  • 这样新每次运行zsh终端的时候

    • 就自动完成路径配置
    • 把~加入到$PATH的路径列表中

~/.zshrc

# 编辑zsh的配置文件rc(run command)
vi ~/.zshrc
  • 编辑这个配置文件

    • 在尾行下面加一句话
    • export PATH=$PATH:~
    • 可能不一定是124行
    • 只要是最后一行就行

编辑

  • 以后只要是进 zsh

    • $PATH 列表中就会包含用户文件夹~(/home/shiyanlou)
  • 可是

    • 这个 ~/.zshrc 到底是啥意思

理解rc文件

  • ~/.zshrc

    • ~ 指的是当前用户的用户宿主文件夹

      • 此配置只对当前用户(shiyanlou)有效
    • 首字母 . 说明这文件是个隐藏文件

      • ls 看不见
      • ls -a 才能看见

编辑

  • zshrc

    • zsh 指的是 当前shell是 zsh
    • 而不是 bash
    • bash 就得用 ~/.bashrc 进行配置
  • 这个rc是什么意思呢?

rc

  • rc 指的是 run commands 的缩写

    • 运行程序
    • 很多东西在配置 shell 的时候不用重复手动运行
    • 写到 rc 里面
    • 启动 shell 或者软件的时候就可以批量处理了

      • ~/.zshrc
      • ~/.vimrc
      • ~/.bashrc

编辑

  • 这个初始化程序对于新建的终端窗口是好用的

    • 但是还得重启一下zsh才能应用
  • 我想要就在当前的zsh下运行一把~/.zshrc
  • 可以么?

运行当前zsh的初始化文件

  • 运行~/.zshrc配置文件

    • source ~/.zshrc
    • 这就是手动执行执行~/.zshrc
  • 或者直接运行zsh也可以

编辑

  • 执行之后

    • 路径就设置好了

总结

  • 这次修改了 $PATH 路径

    • 把当前用户shiyanlou的宿主文件夹 ~

      • 添加到 $PATH
    • 这样 sleep.py 就可以被找到
    • 于是就可以被执行了
  • 还可以把配置 $PATH 的脚本

    • 放到 zsh的配置文件(~/.zshrc) 中
    • 配置 ~/.zshrc 就可以

      • 设置 zsh 环境下默认的 $PATH
  • 在当前路径运行 sleep.py

    • python 程序第 1 行

      • 声明打开方式为 python3
    • /usr/bin/python3

      • 从硬盘调用到内存

        • 成为一个进程

          • 不断输出时间
        • ctrl+c结束进程

编辑

[oeasy]python0030_设置路径_export_PATH_zsh_系统路径设置_export的更多相关文章

  1. 织梦系统如何设置URL绝对路径及绝对路径的好处

    今天,和大家分享下织梦系统如何设置URL绝对路径及绝对路径的好处,我的一些就是用的织梦系统,感觉织梦在SEO优化方面做的还是非常好的,至少在CMS系统中应该是做的最出色的吧!下面,我就先来讲下这个织梦 ...

  2. [记]Windows 系统下设置Nodejs NPM全局路径

    Windows下的Nodejs npm路径是appdata,担心安装的node_modules越来越多,导致C盘满,所以参考别人的博文,将node_modules安装的默认目录修改一下. 参考Wind ...

  3. [WinAPI] API 12 [获取程序所在的目录、程序模块路径,获取和设置当前目录]

    Windows系统提供一组API实现对程序运行时相关目录的获取和设置.用户可以使用GetCurrentDirectory和SetCurrentDirectory获取程序的当前目录,获取模块的路径使用G ...

  4. Cookie (设置与读取、超时设置、指定路径、显示用户上次登录时间)

    Cooike简介 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的 ...

  5. Xcode 中的相对路径与绝对路径的相关设置

    近日闲来无事,与博客园中闲荡,忽至一烟霞照耀祥瑞蒸熏松竹翠秀奇花遍开的神奇之地.如此美景,令人心生向往,故而徜徉于其中不可自拔,独乐乐不如众乐乐: iOS开发之 相对路径与绝对路径 https://d ...

  6. spring MVC项目中,欢迎页首页根路径到底是怎么设置的

    0. 问题: 如何改mvc中项目的欢迎页,或者叫做根路径 一个东西快弄完了,就剩下一个问题,应该是个小问题.就是mvc项目的欢迎页,怎么给改下呢. 这个项目是通过mvn建立的,整个项目的原型就是spr ...

  7. 设置Eclipse的workspace路径

    首次启动Eclipse/MyEclipse时, 会弹出"Workspace Launcher"对话框, 提示设置Workspace路径. 设定好路径后, 若勾选了"Use ...

  8. Innosetup 设置文件的相对路径

    在使用innosetup自动化打包的过程中,如果打包配置文件要随代码一起提交,则需要将打包文件改为相对路径,以便在其它端也可以直接打包,而不需要再次修改文件路径参数. 添加自动化打包文件 1. 添加b ...

  9. 用node.js express设置路径后 子路径下的页面访问静态资源路径出问题

    在routes/news_mian.js 设置了访问news_main.html 的路径 '/',通知设置一个访问news-page.html的子路径'/newspage'子路径.但是在访问loacl ...

  10. Springboot实体类转JSON报错Could not find acceptable representation & 设置访问项目根路径的默认欢迎页面

    =================实体类转JSON报错的解决办法============= 之前在springmvc的时候也报过这个错,原因以及springmvc中解决办法参考:https://www ...

随机推荐

  1. WPF没修改代码出现InitializeComponent报错的解决办法

    问题不在于我们做错了什么,之前还好好的,我们什么都没做,就报错了.这完全不是我们的问题. 我的建议是,直接做绝一点,删除obj和debug文件夹,让他自己重新生成一次

  2. Android 12(S) Binder(三)

    学以致用,这一节来native binder实战! android 12中的service用到的Bp.Bn文件多由aidl生成,所以实战中也用aidl来生成. 1.文件目录结构 文件目录结构如上,偷懒 ...

  3. 为什么SwiftUI使用struct, 限制使用class

    前言 在学习SwiftUI所有的地方,视图元素都定义一个struct并实现View协议,该协议定义body变量返回View类型. 但是为什么,这里一直是指定的struct, 而不是class呢? 尝试 ...

  4. 『手撕Vue-CLI』下载指定模板

    开篇 经上篇文章的介绍,实现了获取下载目录地址,接下来实现下载指定模板的功能. 背景 通过很多章节过后,已经可以拿到模板名称,模板版本号,下载目录地址,这些信息都是为了下载指定模板做准备的. 实现 如 ...

  5. 算法金 | 你真的完全理解 Logistic 回归算法了吗

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今日 178/10000 1. 引言 吴恩达:机器学习的六个核心算法!, 通透!!十大 ...

  6. Linux网络驱动

    1 简介 1.1 硬件说明 嵌入式网络硬件分为:MAC和PHY.MAC一般时SOC内置,PHY是外部器件. (1)SOC内部没有MAC 如果SOC内部没有网络MAC外设,可使用外置的MAC,一般外置的 ...

  7. 剑指Offer-58.对称的二叉树(C++/Java)

    题目: 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 分析: 从根结点开始递归对比左右子树即可.需要注意的是,当前左右两个结点相同比较 ...

  8. TiDB 多集群告警监控-中章-融合多集群 Grafana

    author:longzhuquan 背景 随着公司XC改造步伐的前进,越来越多的业务选择 TiDB,由于各个业务之间需要物理隔离,避免不了的 TiDB 集群数量越来越多.虽然每套 TiDB 集群均有 ...

  9. mysql备份实战

    1.备份恢复演练(mysqldump+binlog) 知识储备 如下内容.. 全量备份 全量数据,指的是某一整个数据库(如kings)中所有的表.以及表数据,进行备份. 例如备份所有数据库.以及所有数 ...

  10. 590. N 叉树的后序遍历 | Javascript 递归实现

    题目 题目链接:590. N 叉树的后序遍历 解题思路 递归后续遍历,正常的思路 然后有一个要注意的地方就是如果js定义了全局变量来存储结果,每次调用函数之前一定要记得清空,否则答案会带上之前的结果. ...