如何在不输入 ./ 的情况下执行 bash 脚本

如何在不输入 ./ 的情况下执行 bash 脚本

它已经困扰我很长时间了,我真的厌倦了。例如,有一个名为 testscript 的脚本可以比较两个目录。在课堂上,教授只需输入

testscript dir1 dir2

要获得输出,但我必须在测试脚本之前添加 ./ 并按 Enter 键。然后在下一行输入dir1和dir2

教授是怎么做到的?是不是和bashrc有关?我从来不明白它是如何工作的。如果相关,请用简单的语言解释,因为我是 Linux 新手。谢谢你!

答案1

您需要将带有脚本的目录添加到PATH变量中:

export PATH="$PATH:/path/to/dir"

或者你甚至可以添加当前的目录到PATH

export PATH="$PATH:."

后者有一些安全缺陷尽管。

答案2

另一种方法是在 bashrc 文件中添加别名:

vim ~/.bashrc

这是我的 bashrc 文件的样子:

# .bashrc

alias coredb='psql -h 172.x.x.x -U jboss jbossdb'
alias psql='psql -h 172.x.x.x -U rkah portal_db'
alias opendb='psql -h 172.x.x.x -U rkah portal_db'


# Source global definitions

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias menu='bash ./menuScript.sh'
alias vi='vim'

如果您查看显示别名的位置,那么您就可以添加它。例如,您可以输入:

alias testscript='bash ./testscript.sh'

答案3

您应该将以下行放在文件末尾.bashrc

PATH=$PATH:.    

为此,您可以输入以下命令:

echo "PATH=$PATH:." >> ~/.bashrc    

然后你应该启动一个新的 shell 让它工作

答案4

您可能考虑的另一种选择是将这些特殊的可执行脚本和程序收集到一个目录中,并将其放入 PATH 语句中。因此,您不必使用可怕的“.”。 (点)在 PATH 变量中,但它仍然会执行您想要的操作。

相关内容