#!/bin/bash --init-file
它定义了几个函数,通常将交互式shell放在一个用户可以控制我想要的东西的环境中.这非常有效.现在,对于有趣的部分,我希望能够让用户在层之间使用这个来编写新脚本,而无需明确地使用这个脚本.那可能吗?
我尝试使用she-bang线编写一个脚本(让我们称之为/usr/bin/foo)
#!/usr/bin/bosh
我认为,将重写执行命令
/usr/bin/bosh /usr/bin/foo
这反过来会导致
/bin/bash --init-file /usr/bin/bosh /usr/bin/foo
但它不起作用,/usr/bin/foo被执行,但/usr/bin/bosh在此之前不是源.
即使脚本不是交互式的,我怎样才能使它获取init文件?或者我是否必须为此编写包装脚本?我想过有这样的剧本
#!/bin/bash . /usr/bin/bosh . "$1"
但是,如果我没有指定要运行的脚本,这将不会变成交互式shell,这将是一种耻辱.
编辑
为了澄清,我真正要问的是,无论是否是交互式(在启动交互式部分之前)(在执行脚本之前),我如何使bash源成为一个文件(如–init-file)?如果没有办法,或许还有其他方法可以解决我的问题吗?
发生的事情是,而不是/ bin / bosh被执行并将foo作为输入,你的登录shell只是默默地回到在子shell中执行foo本身,这就是为什么它似乎几乎可以工作.
以您想要的方式启动bash的包装器或C程序可能是您唯一的选择.即使升级到你的内核,它也不会像你想要的那样工作.
你想知道的关于#的一切!这里:http://www.in-ulm.de/~mascheck/various/shebang/
编辑:如果您的内核确实支持链式脚本,那么/usr/bin/bosh的解决方法可能类似于:
#!/bin/bash if [ ! $PS1 ]; then exec /bin/bash --init-file "$0" -i "$@" fi ... rest of bosh init file ...
一个exec似乎不可避免地以你想要的方式工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。