为位于我的一个文件夹中的 shell 脚本设置别名



所以我有这个文件夹BashScripts,它具有以下目录路径

/home/sadnan/BashScripts

/home/sadnan是我的$HOME.这是我打算放置自定义 shell 脚本的地方。目前只有一个叫cbi.sh。当我从文件夹内运行时,脚本按预期工作。现在我希望能够在全球范围内运行它。所以我在我的 .bashrc 文件中添加了以下内容

#For my personal Bash Scripts
if [ -d $HOME/BashScripts ]; then
PATH="$PATH:$HOME/BashScripts"
fi
alias cbi='. ./cbi.sh'

所以现在当我echo $PATH时,它会打印出以下内容

/home/sadnan/.nvm/versions/node/v12.18.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/sadnan/BashScripts

因此,该文件夹似乎已添加到PATH中。如果我理解正确,应该允许我全局运行我的 shell 脚本。

然后我还为脚本设置了一个别名并将其命名为cbi

但是现在当我在终端上运行cbi./cbi.sh时,这就是我得到的

bash: ./cbi.sh: No such file or directory

我做错了什么,我没有做太多的 shell 脚本。但我认为这是要走的路。

我也尝试过alias cbi=`source ./cbi.sh'alias cbi=`sh ./cbi.sh'两者都没有奏效。

你必须运行cbi.sh

# Wrong, the file is not named 'cbi'
cbi
# Wrong, the file is not in the current directory
./cbi.sh
# Wrong, same reason as above
alias cbi='. ./cbi.sh'
cbi
# Correct, this is the name of the file:
cbi.sh

./cbi.sh的意思是"从当前目录运行 cbi.sh"。 因此,如果您不在/home/sadnan/BashScripts它将不起作用,因为它无法在当前目录中找到cbi.sh

要确认 PATH 设置正确,请执行which cbi.sh。 它应该返回/home/sadnan/BashScripts/cbi.sh.

如果必须有别名,则可以执行alias cbi='/home/sadnan/BashScripts/cbi.sh'。 这是确保正确执行的最简单方法。

要使上述所有功能正常工作,cbi.sh必须是可执行的(chmod u+x cbi.sh(。


如果你想获取它(. cbi.sh(,而不是像可执行文件一样调用它,请像这样定义你的别名:

alias cbi='. /home/sadnan/BashScripts/cbi.sh'

研究执行和"获取"脚本之间的区别。



编辑:我删除了这段文字,遵循@Diego的评论。

您的 PATH 变量根本不会被使用。 然后,您应该删除 路径添加,以及

最新更新