如何在新的屏幕窗口中执行 bash 别名?

cat*_*nts 5 linux bash

在我的 .screenrc 中,我有几行类似于以下内容:

screen -t qf1 bash
Run Code Online (Sandbox Code Playgroud)

所以对于那个窗口,我目前正在执行 bash。相反,我想执行以下别名“qf”,这是一个为某个 URL 执行 lynx 的 bash 别名。

但是,我收到以下错误:

"Cannot exec 'qf': No such file or directory"
Run Code Online (Sandbox Code Playgroud)

我知道它可能与路径有关,但提供:

screen -t qf1 lynx www.google.com
Run Code Online (Sandbox Code Playgroud)

也不行。我知道我错过了一些明显的东西。谢谢!

小智 6

最有可能的是,您的 bash 别名无法用于筛选。有几种方法可以解决这个问题。

  • 如果您的别名在 中.bash_profile,请将它们移动到.bashrc
  • 使用-l开关启动 bash shell以强制 bash 解析.bash_profile

看看这个问题的类似问题。

编辑

实际上有两件事阻止了它的工作:

使用bash的命令字符串语法将命令传递到新窗口

    screen -t "YayScreen" bash -c "man screen"
Run Code Online (Sandbox Code Playgroud)

别名是屏幕上的痛点

在 $PATH 中创建一个具有所需名称的 bash 脚本(例如,/bin),并以与上述示例相同的方式调用它。例如,我有一个非常简单的别名psgrep,用于按名称查找进程。我将此脚本创建为/bin/psgrep

#!/bin/bash
ps aux | grep -v grep | grep $1
Run Code Online (Sandbox Code Playgroud)

然后我可以将它添加到我的.screenrc

screen -t "Useless Command" bash -c "psgrep gnome"
Run Code Online (Sandbox Code Playgroud)

请参阅此旧的Mac OS X 论坛帖子,以获取更长的无效列表。