当前位置: 首页>>技术教程>>正文


我应该使用.sh扩展名保存脚本吗?

,

问题描述

我有一些功能脚本,我想复制到/usr/bin我想将它们用作普通的终端命令。将它们与.sh扩展一起使用是一种好的做法,还是可以在没有扩展名的情况下保存它们?

最佳解决思路

不,这不是一个好习惯,你应该保持你的脚本没有扩展名。请注意,作为包的一部分的脚本没有.sh扩展名,即update-grub,而不是update-grub.sh。如果您仍然不相信,那么请告知,Google Shell Style Guide说:

Executables should have no extension (strongly preferred) or a .sh extension. Libraries must have a .sh extension and should not be executable.

PS您不必将脚本放入/bin。您可以创建目录~/bin并将脚本放在那里。目录~/bin默认包含在$PATH中,因此放在那里的脚本可以像任何其他shell命令一样运行。

次佳解决思路

我推荐使用~/bin,它会自动添加到您的$PATH,正如Sergey所说。或/usr/local/bin,可能已经在PATH上。然而:

  • 你是为自己这样做的。使用你觉得舒服的任何东西。事实上,我会说保留扩展程序,以便提醒您这是您正在运行的脚本,因为 –

  • 扩展在/usr/bin中并不常见。在我的系统中,我只能找到两个:

    $ dpkg -S `ls /usr/bin/*.sh`
    mtools: /usr/bin/amuFormat.sh
    gettext-base: /usr/bin/gettext.sh
    

    因此,如果您正在打包,请务必省略扩展名。

第三种解决思路

只需将以下行放在文件顶部:

#!/bin/bash

So-that文件将自动输入:Shell Script没有任何扩展名!

记得给文件执行权限。

对于放置脚本so-that可以通过直接命令运行,请访问:Where should I put my script so that I can run it by a direct command?

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1494.html,未经允许,请勿转载。