【发布时间】: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 被丢弃)