在 Linux Deepin 下,如何将 Bash 脚本放在个人目录下并能够不指定路径而直接执行脚本?

今天我们就以这个问题作为切入点,继续讲一下 Bash 的一些基础知识。

现在,我们打开文本编辑器,编写一个名称为 noisyscript 的 Bash 脚本,其内容为:

Default

#! /usr/bin/env bash

while true

do echo "I am a noisy script,hohoho!"

done

1

2

3

4

#! /usr/bin/env bash

whiletrue

doecho"I am a noisy script,hohoho!"

done

编写完毕后保存。赋予该脚本以可执行权限:

Default

$ chmod +x noisyscript

1

$chmod+xnoisyscript

如何将它放在个人目录下并能够不指定路径来直接执行它呢?这里我们就需要把我们的个人目录放在 PATH 变量(PATH 变量是 Bash 在一命令非别名、函数、内置命令、shell 关键词且未指定路径名称时要搜寻的一个由冒号隔开的路径列表)里面,并将此设置放在当前用户的 .bashrc 文件中。比如,我们打算把自己的脚本都放在当前用户的家目录下的 bin 路径下执行,我们需要这样做:

Default

$ mkdir -p $HOME/bin

$ echo 'PATH="$HOME/bin:$PATH"' >> "$HOME"/.bashrc

$ exec bash

1

2

3

$mkdir-p$HOME/bin

$echo'PATH="$HOME/bin:$PATH"'>>"$HOME"/.bashrc

$execbash

第一条命令会在当前用户的家目录下创建一个名称为 bin 的目录。第二条命令会在当前用户的 .bashrc 文件中加上一行,用于将刚创建的 bin 目录加入到 PATH 变量的开头。这样,每一个新的 Bash 实例都会检查你的 bin 目录下的可执行脚本。最后一行会将我们当前运行的 Bash 换成新的实例,这个新的实例在启动时会读取新的 .bashrc 文件。

这样,我们就可以将我们的可执行脚本放于该目录下并像执行普通命令一样执行该脚本了:

Default

$ mv noisyscript "$HOME/bin"

$ noisyscript

1

2

$mvnoisyscript"$HOME/bin"

$noisyscript

下面,为了照顾初学 Bash 的朋友,我们来顺便解释一下这个脚本内容的含义:

脚本的第一行 #! /usr/bin/env bash 为脚本的标头,也可以写成 #! /bin/bash,这一行告诉我们的系统内核在该脚本执行时,会调用 bash 作为其解释器。网上有许多例子会以 /bin/sh 作为解释器。尽管 sh 与 Bash 的句法非常相像,且大多数 Bash 脚本在 sh 里面也能够正常执行,但是 sh 并不是 Bash,许多 Bash 特性并不适用于 sh。另外,也完全没有必要在脚本名称上加上一个 .sh 后缀,它不仅无任何作用,而且有误导作用——因为这是一个 Bash 脚本,而非一个 sh 脚本。

我们在《Linux Deepin 同时解压多个 taball 压缩档案》一文中曾讲过循环与 for-循环两个基本概念,并使用 for-循环实现了同时解压多个 tarball 压缩档案的目的。在本文的这个脚本中,我们使用到另一种循环——while-循环。while-循环是在某个命令执行成功的前提下一直继续执行代码的一种循环。

true 是一个 Bash 的内置命令,总是返回一个成功的执行结果(即退出状态为 0)。这样,对于一直成功执行的 true 命令,就会一直执行 echo "I am a noisy script,hohoho!" 这段代码(注意:你可以按 Ctrl-C 来终止这个脚本的执行)。

linux脚本一般放在哪个目录下,Linux Deepin 将脚本放在个人目录下直接执行相关推荐

  1. linux下的/dev/shm/ 以及与swap目录的区别【转】

    /dev/shm 概念 首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 你可以通过这个 ...

  2. 脚本同步mysql数据_windows下数据库文件使用脚本同步到linux下的mysql数据库中

    1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...

  3. Linux下的lds链接脚本详解

    一. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分 ...

  4. Linux环境下,通过shell脚本实现一键部署MySQL,并支持多种类型

    Linux环境下一键部署MySQL脚本,支持多种类型 前言 一.使用前须知 二.使用方法 三.shell脚本内容 总结 前言   MySQL是目前最流行的关系型数据库管理系统之一,属于 Oracle ...

  5. linux闲话FHS标准下linux目录结构

    2019独角兽企业重金招聘Python工程师标准>>> 1.闲话         2011年10月24日收到了秒针的OfferLetter并决定加入之后,就开始认真学习linux.坦 ...

  6. linux mount挂载命令(将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来)

    看海康摄像头启动脚本有一些mount命令,不知道干啥用的... mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹, ...

  7. linux下什么文件不能修改,Linux和Unix下root也不能修改文件与目录的命令

    chattr 只有超级权限的用户才具有使用该命令的权限,这项指令可改变存放在ext2.ext3.ext4.xfs.ubifs.reiserfs.jfs等文件系统上的文件或目录属性. 1.功能说明 改变 ...

  8. linux jetty 安装目录结构,Linux下Jetty 9安装部署

    Jetty简介 Jetty是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布. ...

  9. linux将光驱挂载到目录下,Linux操作系统下关于光驱的挂载

    Linux操作系统下关于光驱的挂载 Linux将每一个物理设备都映射成了一个文件,这些文件都放在了/dev文件(linux中目录也是文件)下面,光驱映射成的文件就是一个名为cdrom的文件.mount ...

最新文章

  1. python 的filter()函数
  2. Django - Django框架 简单介绍
  3. .Net 中的反射(反射特性) - Part.3 - (转载)
  4. 错误记录(一)Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister报错解决办法
  5. VirtualBox的四种网络接入模式
  6. Cloudflare通过UnstoppableDomains添加对“.crypto”域名的支持
  7. mbed OS - ARM关于物联网(IoT)的战略布局
  8. Proxmark3 Easy Gui 4.0 5.0 5.1加强版 PM3GUI_X稳定优化版
  9. Compass被墙后如何安装安装
  10. 生产环境apache2整合tomcat动静分离
  11. 《Adobe Audition CC经典教程》——1.5 使用外部连接器
  12. 软件测试验收方法_验收测试是美丽的魔术。 这就是它可以改善您的生活的方法。...
  13. 没落的移动端原生开发
  14. 实验项目1 置换密码
  15. 用Python来合并图片(SoEasy)
  16. 销量破亿,董洁直播间凭何出圈?
  17. 怎样用计算机截图,如何在电脑中截图
  18. 文档整体缩进html,CSS样式中实现文本缩进的属性是
  19. 重生之我是赏金猎人-番外篇-记一次层层突破的攻防演练
  20. ssh登录windows

热门文章

  1. 2019暑期个人排位集训补题--思维题
  2. 难逾3000元门槛大关——国产手机的无奈困局
  3. JMockit使用总结
  4. (C语言)写一个函数insert,用来向一个动态链表插入节点
  5. BloomFilter
  6. 使用远程工具RDO:远程计算机需要网络级别身份验证,而您的计算机不支持该验证解决办法
  7. 神经网络(二):Softmax函数与多元逻辑回归
  8. 研究人员创建一种安全的CAR T细胞疗法来对抗儿童的实体瘤
  9. js怎么实现网站抓取手机号
  10. 手游我的世界服务器地图文件夹,探秘《我的世界》手游 新版本支持本地地图导入...