【发布时间】:2020-07-09 09:03:41
【问题描述】:
我想像这样启动一个交互式 bash shell:
bash (...some options) 1 2 3
所以在 shell 会话中,我有 $1=1, ...
我没有找到任何选项来实现这个效果。
我试过了,认为它可能会起作用:
bash -c bash _ 1 2 3
但它没有。
【问题讨论】:
标签: bash interactive-shell positional-parameter
我想像这样启动一个交互式 bash shell:
bash (...some options) 1 2 3
所以在 shell 会话中,我有 $1=1, ...
我没有找到任何选项来实现这个效果。
我试过了,认为它可能会起作用:
bash -c bash _ 1 2 3
但它没有。
【问题讨论】:
标签: bash interactive-shell positional-parameter
-s
如果存在此选项,或者在选项处理后没有保留任何参数,则从标准输入读取命令。这 选项允许在调用时设置位置参数 交互式 shell 或通过管道读取输入时。
$ bash -s 1 2 3
$ echo $1
1
$ exit
$
【讨论】:
bash --rcfile customized-bashrc -s 1 2 3 时,有没有办法获得“$@”?
$#、"$@"、$1 等?它们可用的可能性适中。在启动文件顶部附近添加echo "$0: ($#) $*" >&2,然后查看您的消息是否出现以及值是什么,这将是片刻的工作。这种上下文是为数不多的使用$* 而不是"$@" 的情况之一。当然你也可以写echo "$0: ($#)" "$@" >&2。
echo "$@",它什么都没有。只有在shell本身,当我做echo "$@"时,我得到1 2 3跨度>
echo $# - "$@" - $1,按照你的建议,我得到0 - -
$@ 在启动文件中是空的,所以我猜它在别的地方。作为一种解决方法,我看到这样做 like here 和 source 你的 rc 文件并手动传递 args。