【问题标题】:Unix bash alias not working after start screen开始屏幕后 Unix bash 别名不起作用
【发布时间】:2016-03-18 18:12:27
【问题描述】:

您好,我在启动 screen 命令后在 mac 中设置别名时遇到问题,我有使用 git 的别名,例如

commit=git commit

当我启动终端 (iTerm2) 时,它们会按预期工作,但有时我会使用 screen 在我使用的远程服务器和虚拟机中同时创建实例。在此之后别名消失(command not found)。

有谁知道为什么或如何解决它?

【问题讨论】:

  • 你还在运行同一个 shell,例如,你的 shell bash 是在屏幕外还是在屏幕内?
  • 我假设你的意思是你有alias commit='git commit'?这是在什么文件中定义的?
  • 屏幕会话结束后别名消失?

标签: bash unix alias gnu-screen


【解决方案1】:

要使别名起作用,您必须使用alias 命令。例如,要在 Bash 中创建别名:

$ alias commit="git commit"

这暂时有效,即:在您当前的外壳中。为了让它“粘”起来,你必须把它放在你的~/.bashrc中。这将使它成为您在终端会话期间调用的所有 Bash 实例的来源。

当你启动 screen 时,它也会启动一个单独的 Bash,所以你会被覆盖。

你写了一些关于虚拟机的东西。如果您需要此别名在那里工作,您必须在这些 VM 上设置 ~/.bashrc 以具有相同的别名。但那是另一个故事。你应该已经知道如何实现你想要的。

【讨论】:

  • 是的,我知道你的意思,我想快点,我的别名在 .bash_profile 中,它的优先级高于 .bashrc
  • .bash_profile 和.bashrc 的问题我通常通过将echo I_AM_IN_BASH_RC 打印输出并确定当您启动screen 时是否执行此echo 来进行调试。如果您没有看到它,那么您的文件根本就没有以某种方式获取。
  • 谢谢,我以为我们正在加载它们,但只是 .bashrc 是,我把我的别名放在那里,它工作正常。谢谢。
【解决方案2】:

您需要确保您的别名在~/.bashrc 中定义,以确保它们包含在所有登录中。您可以对此进行测试:编辑您的 ~/.bashrc 以包含此行:

echo "bashrc"

然后编辑您的~/.bash_profile 以包含此行:

echo "bash_profile"

当您启动screen 时,您会看到只显示“bashrc”。

有关该主题的更多详细信息,请参阅this question。

【讨论】:

  • 是的,你是对的,我启动屏幕时只运行 bashrc,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多