【问题标题】:Executing Shell Script from current directory without '"./filename"从当前目录执行 Shell 脚本,不带 '"./filename"
【发布时间】:2023-03-05 13:16:03
【问题描述】:

我创建了一个名为“testfile”的文件,并使用chmod +x testfile 使其可执行。 为了执行文件“testfile”,我需要运行命令./testfile

我需要知道有什么方法可以在不使用./ 的情况下运行程序并使用testfile 命令执行文件?

下面显示的是文件“testfile”中的一个简单代码

echo Todays date is : 
date

【问题讨论】:

  • export PATH=./:$PATH,但这不好。
  • 请不要称它为test,因为该命令已经存在。
  • 为什么不建议导出 .到 $PATH?

标签: linux shell admin


【解决方案1】:

你可以在不使用 ./ 的情况下执行它:

sh testfile

或者

sh /path/to/file/testfile

编辑
如果你想直接用命令执行程序,你可以定义一个别名:

alias execute_testfile="sh /path/to/file/testfile"

然后,您将在编写时执行程序

execute_testfile

或您定义的任何名称。

要使此别名持久化,请在 ~/.profile 或 ~/.bash_profile 文件中包含 alias ... 行。

【讨论】:

  • 是的,但我需要执行我的文件而不需要任何这些。就像执行已经在 linux 中的命令一样。例如:top、ps、ls 等
  • 啊,对,在这​​种情况下,您可以定义一个别名:alias execute_testfile="sh /path/to/file/testfile"。然后,每当您编写execute_testfile(或您定义的任何名称)时,您都会执行程序。
  • 太好了,@frozenhaart!我编辑我的答案以包含此解释和更多信息。如果有效,您可以将问题标记为已回答。
【解决方案2】:

您可以在主目录下的 .profile 文件中定义 PATH 变量。

vi ~/.profile

添加到您的 .profile 末尾

/path/to/dir/:$PATH

这意味着“将 /path/to/dir/ 添加到任何设置的 PATH 变量中”

如果您想为系统的所有用户添加一个目录到 PATH,您可以:

vi /etc/environment - edit, save your changes
source /etc/environment
echo $PATH - should now return your new PATH

在 Ubuntu 服务器上工作,我猜想在所有 Debian 发行版上,我不确定其他发行版是否有 /etc/environment 或者是否在其他地方指定了 PATH

别名仍然是一个更好的解决方案

vi ~/.bashrc

添加到文件末尾

alias <your_script> ='/path/to/your_script.sh'

退出,重新登录 - 你不应该再输入 ./.sh'

【讨论】:

    【解决方案3】:

    您需要像这样将. 添加到您的PATH 变量中:

    > echo 'echo Hello, World!' > mycommand
    > mycommand
    -bash: mycommand: command not found
    > ./mycommand
    Hello, World!
    > PATH=".:$PATH";
    > mycommand
    Hello, World!
    >
    

    【讨论】:

    • 感谢您的回复,但我在哪里添加 - PATH=".:$PATH";
    • @frozenhaart 在运行命令之前在 shell 提示符下进行精简。为答案添加了更多详细信息。