问题 Bash,执行命令但继续交互式会话


我想为其创建一个别名 pagsh 这将立即得到管理员kerberos票。

问题是我无法弄清楚如何为该命令指定命令 bash 运行,但在命令完成后仍继续使用交互式会话。

我目前的镜头是:

alias admin=pagsh -c "bash -c \"kinit xtoth1@ADMIN.META\""

bash 逻辑上结束后 kinit 已经完成了。如何将自定义命令推送到bash的交互式会话中?我仍然需要正常运行.bashrc,因此我无法使用 --rcfile


6097
2018-01-03 13:16


起源



答案:


我的建议是使用自定义的bashrc文件 --rcfile 来源你的.bashrc,ex:

alias admin=pagsh -c "bash --rcfile myrc"

myrc :

source ~/.bashrc
kinit xtoth1@ADMIN.META

10
2018-01-03 13:27



哦,我真笨:-D这是个好主意。 - Let_Me_Be
很高兴我能帮上忙 :) - OneOfOne
我认为应该阅读 alias admin=pagsh -c "bash --rcfile myrc"  即。 bash而不是bashrc - Graeme Moss
糟糕,是的,固定:) - OneOfOne


答案:


我的建议是使用自定义的bashrc文件 --rcfile 来源你的.bashrc,ex:

alias admin=pagsh -c "bash --rcfile myrc"

myrc :

source ~/.bashrc
kinit xtoth1@ADMIN.META

10
2018-01-03 13:27



哦,我真笨:-D这是个好主意。 - Let_Me_Be
很高兴我能帮上忙 :) - OneOfOne
我认为应该阅读 alias admin=pagsh -c "bash --rcfile myrc"  即。 bash而不是bashrc - Graeme Moss
糟糕,是的,固定:) - OneOfOne


如果你需要的只是一行或两行,你可以使用“过程替换”[1]的酷bash功能在调用行上提供它。例如(在特定的python virtualenv中运行bash):

bash --rcfile <(echo '. ./pyvenv/bin/activate')

多行不是问题,也不是使用变量或帮助:

bash --rcfile <(echo echo "Starting at `date`"; echo cd $HOME)

[1] man bash 并寻找“过程替代”。请注意,并非所有系统都支持此功能,但它应适用于所有Linux。


2
2018-06-27 15:49





怎么样?

alias admin='pagsh -c "bash -c \"kinit xtoth1@ADMIN.META; exec bash\""'

甚至

alias admin='pagsh -c "kinit xtoth1@ADMIN.META; exec bash"'

可能有用。 (我没有工作的openafs环境来正确测试它。)


1
2018-04-25 23:18