【问题标题】:executing scripts执行脚本
【发布时间】:2012-05-18 20:03:20
【问题描述】:

我有一个包含一堆脚本的文件夹。假设文件夹在~/scripts

有没有一种方法可以让我轻松执行目录中的这些脚本,而无需执行类似 ~/scripts/file1.sh 之类的操作?我已经尝试将脚本放在/bin/ 中,但我仍然需要做file1.sh。有没有一种方法可以让我只用它们的名字来引用这些脚本,而不需要扩展名(即file1)?

谢谢。

【问题讨论】:

  • 为什么不用.sh命名脚本?
  • 只是为了方便。此外,我在其中的大多数脚本更像是实用程序命令。
  • 是的,但为什么不将文件重命名为file1?那么您不需要输入.sh 部分。如果脚本被标记为可执行并且有正确的#!-line,则不需要有.sh 扩展。
  • 啊,我不知道!我认为所有脚本都需要以 .sh 结尾
  • 不需要任何扩展。当您执行一个文件时,内核将进行一些签名检查以确定如何执行它(如果可能),对于脚本,无论是 shell、ruby、python 脚本等,它们都以#! 和之后,以脚本文件作为参数执行的实际文件的路径。

标签: unix scripting bin


【解决方案1】:

~/scripts 添加到 .profile、.bashrc 或命令行本身的 PATH 环境变量中。使用以下命令更改 PATH 环境变量:

export PATH=$PATH:~/scripts

一旦完成,请确保您的脚本具有使用chmod +x file 命令的执行权限,然后您可以执行:

file1.sh
file2.sh

即不以这些脚本的实际路径为前缀。

【讨论】:

  • 好的,所以我将路径添加到我的 PATH 变量中。如何使更改永久化?我不想每次打开终端时都设置路径。谢谢
  • 要使更改永久化,请将 export PATH=$PATH:~/scripts 添加到您的 ~/.profile~/.bashrc 文件中。进行更改后注销并再次登录。
  • 我尝试打开~/.profile~/.bashrc,但出现“没有这样的文件或目录”错误。
  • .profile 可能不存在,但您当然可以创建一个新的并在那里添加上述命令。顺便说一句,您知道您使用的是哪个外壳吗?
  • 没有。但我假设伯恩壳牌。因为脚本的 sheabang 是 #! /bin/sh.
【解决方案2】:

如果您想运行多个脚本,这不是最佳解决方案,但您可以为最常用的脚本创建别名。我还将我的 shell 脚本命名为 .sh 扩展名以用于文档目的(即在执行 ls 时很容易发现)。

这样别名是没有.sh扩展名的脚本名称,而是直接引用我自己的~/bin目录来调用脚本。

这个操作系统的优点之一是总有很多方法可以完成一项任务,在你的工具箱中拥有多种方法以防万一哪天哪一种方法不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 2017-06-29
    • 2019-08-14
    • 2012-07-23
    • 2013-05-20
    • 2018-09-06
    相关资源
    最近更新 更多