shell 如何通过仅键入name而不是path/ www.example.com来运行bash脚本name.sh?

k10s72fa  于 2023-03-19  发布在  Shell
关注(0)|答案(1)|浏览(127)

我想运行一个名为hello的bash脚本(只是作为一个例子),并希望只输入hello而不是path/hello.sh来运行它。目的是运行像我们如何运行docker,mysql,git等命令的脚本,其中您只在参数和选项之前输入名称,而不是输入路径/executable.extension来运行它。
我一直在关注这个问题的最佳答案:Add a bash script to path
它说(对于名为www.example.com的脚本apt-proxy.sh):
将脚本保存为apt-proxy(不带.sh扩展名),保存在某个目录中,如~/bin。
将~/bin添加到您的PATH中,键入export PATH=$PATH:~/bin
如果您需要永久使用它,请将最后一行添加到~/. bashrc中;如果您使用的是zsh,请将其添加到~/.zshrc中。
然后你可以用你的参数运行apt-proxy,它可以在任何地方运行。注意,如果你在一个特定的窗口中导出PATH变量,它不会在其他bash示例中更新。
所以我做了一个名为hello的脚本(没有.sh),它只包含:

!/用户名/bin/sh

回声“你好”
它只是在我home/username文件夹中,所以我添加了export PATH=$PATH:$HOME/username,但这没有意义,因为目录已经在PATH中,但我不知道还能做什么。
我在使用ubuntu的时候把它添加到~.profile文件中,然后用source来运行/更新它。
从链接的帖子来看,这样做应该可以让我像那样运行hello,而不是./hello,但是我不能。我必须输入./hello。
我怎么把它当作你好来运行呢?

gajydyqb

gajydyqb1#

我会首先尝试更新您的第1行:

#!/usr/bin/sh

以反映bash二进制文件的实际路径,即:

#!/bin/bash

如果脚本被正确调用,但解释器shell不正确,这将解决您的问题。如果脚本没有被正确调用,我还建议添加一个符号链接到您路径中的目录,如下所示:

ln -sf [/path/to/your/script] $(echo $PATH | awk -F ':' '{print $1}')/[script name you want to call anywhere]

相关问题