如何使shell脚本全局化?

时间:2010-08-24 19:33:53

标签: macos shell unix

我在Mac的OS 10.6上,我正在尝试学习关于shell脚本的一两件事。我理解如何保存shell脚本并使其可执行,但我想知道我能做什么或者我可以保存文件以使其全局化(即无论我在哪个文件夹都可访问)。

例如,如果我将.sh文件保存在/ Users / username /目录中并使其可执行,我只能在该特定目录中执行该脚本。例如,如果我导航到/ Users / username / Downloads,我就无法执行脚本。

此外,任何有关shell脚本学习的资源建议都会有所帮助。感谢

9 个答案:

答案 0 :(得分:105)

/usr/local/bin将是最合适的位置。 Mac OS X默认使用PATH

答案 1 :(得分:34)

传统上,此类脚本要么进入~/bin(即:主目录中的bin目录),要么/usr/local/bin/前者表示脚本只适用于您,后者适用于您想要的脚本系统上的任何人都可以运行。

如果将其放在~/bin中,则可能需要将其添加到PATH环境变量中。 /usr/local/bin应该已经开始了。

答案 2 :(得分:15)

有两种方法可以做到 -

  1. 将您的脚本放在usr / local / bin中并确保它是可执行的(chmod + x my_script)(这已在路径中设置,您可以通过回显$ PATH来检查)
  2. 在您的主目录中创建一个名为bin的文件夹。 (对于您的个人脚本)
    • cd~(带你到你的主目录)
    • mkdir bin(创建bin文件夹)
    • vim .bash_profile(设置路径环境变量)
    • export PATH =〜/ bin:$ PATH(按i然后添加此行然后执行esc并输入:wq)
    • 现在,您只需输入脚本的名称,然后从任意位置运行它。
  3. ** 注意:如果要使用缩短的命令运行脚本而不是键入整个文件名,请将以下内容添加到.bash_profile中:
    alias myscript='my_script.sh'
    然后,您只需键入myscript即可运行该脚本。 (你可以选择你想要的任何别名)

答案 3 :(得分:2)

在使用bash shell时,将该脚本编写为函数,然后将其放入.bashrc或通过“source file_name”来源包含该函数的文件

现在通过shell中的函数调用执行脚本。

答案 4 :(得分:2)

在mac操作系统中

  • 打开bash~ / .bashrc文件。
  • 使用添加脚本在bashrc文件中的路径 导出路径=“$ PATH:/Users/sher.mohammad/Office/practice/practiceShell”
  • 打开〜。/ bash_profile 文件并添加 [[-s~ / .bashrc]]&&来源〜/ .bashrc
  • 打开新的终端窗口 现在无论何时打开终端,都会加载脚本

答案 5 :(得分:2)

如果您熟悉bashrc文件,这个非常简单!这将完全使用你的.bashrc文件,需要2秒才能完成。

(我使用Arch Linux Manjaro所以我使用位于我主目录中的.bashrc)

要放在.bashrc文件中的代码:

# Simple bashrc method to launch anything in terminal from any directory

YOURCOMMAND () {
  cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT
}

正如您所看到的,首先使用简单的'cd'命令并将其命名为脚本位置的目录,然后使用'&&'这样你就可以立即执行下一个命令,最后像平常一样打开你的脚本!超级简单并保存在.bash文件中! :)

希望我帮助过某人!

此致

AnonymousX

答案 6 :(得分:1)

将其保存在/usr/bin(或PATH中的任何其他目录)或编辑PATH以包含您保存的目录中,基本上可以在任何目录中运行。< / p>

答案 7 :(得分:0)

从“ script.sh”的工作目录“ mv [script.sh] / usr / local / bin”(未经测试,但似乎是最简单的IMO方法。)

答案 8 :(得分:-2)

您应将其放在计算机上的全局可执行文件目录中。我认为在基于Unix的操作系统上通常会/usr/bin(但这通常需要在该计算机上拥有超级用户权限)。

您也可以将它放在$PATH环境变量中的任何其他目录中,尽管它只适用于那个变量中包含该目录的用户。

您可以在shell中输入$PATH来查找echo $PATH的值。目录由 :分隔。