【问题标题】:Defining bash aliases from Ruby script从 Ruby 脚本定义 bash 别名
【发布时间】:2015-06-25 00:44:36
【问题描述】:

我正在尝试从 Ruby 脚本设置 Bash 别名。预期的功能将是(来自 Ruby 脚本):

  • 打开 ~/.bash_aliases(或其他东西)
  • 在文件中添加别名行(例如:alias foo="cd /bar/blah"
  • 来源 .bash_aliases
  • 退出 Ruby 脚本
  • 能够使用新别名

但是,使用system 命令不起作用,因为它会启动一个新的子shell。

有什么建议吗?

【问题讨论】:

  • exec 我认为不会启动子外壳。
  • 是的,但是 exec 也完全绕过了我的脚本的其余部分,因为它替换了当前进程,并且我希望能够在退出之前打印出一些东西。另外,我试过了,但别名仍然不起作用;不知道为什么。
  • 常识,我猜。我不希望一些随机脚本能够更改我的 ENV,除非我特别指示它
  • 同意,但我不确定为什么别名在技术 POV 中不起作用。
  • “为什么别名在技术 POV 中不起作用” - 如果您的意思是“为什么在我的程序退出后别名不存在”,那么猜测/答案将是相同的: shell 安全性(修改后的子 ENV 被丢弃)

标签: ruby bash


【解决方案1】:

你想做的事不可行。
您正在启动的脚本无法真正改变 shell 的环境。
一种方法是获取 ruby​​ 脚本的输出并让脚本只生成命令。这样,您就可以指示 shell 实际做正确的事情。

类似

source $(my_ruby_script.rb)

让脚本更改别名,最后读取并打印出文件。

【讨论】:

    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多