微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将参数从tcsh传递到另一个shell

如何解决将参数从tcsh传递到另一个shell

我刚刚安装了autojump,但它似乎与tcsh并不完全兼容。相反,它可以完美地用于bash。但是,我想让它在我的tcsh上运行,因此,我尝试将命令通过管道传递到bash shell,如下所示:

% setenv test "cd `echo '. ~/.bashrc; j public_html' | bash`"

由于以下原因,效果很好:

% echo $test
cd /home/username/public_html
% $test; pwd
/home/username/public_html

但是我想将以下命令绑定到别名j及其参数,因此它将像普通的自动跳转程序一样工作。但是,当我尝试传递参数时,它似乎不起作用,如下所示:

% setenv j "cd `echo '. ~/.bashrc; j $1' | bash`"
% $j public_html
cd: Too many arguments.
% echo $j public_html
cd /home/username/.linuxbrew/share/autojump public_html

% alias j "cd `echo '. ~/.bashrc; j \!:1' | bash`"
% j public_html
cd: Too many arguments.

但是,以某种方式,如果我要传递这样的参数:

% setenv test "echo `echo 'echo {$1,$2}' | bash`"
% $test 2 3
2 3

它工作正常。我到底在想什么?

顺便说一下,这是我的期望:

% j public_html
% pwd 
/home/username/public_html

解决方法

我试过了:

% alias jt "bash -c '. ~/.bashrc; j \!:1'"
% alias j 'cd `jt \!:1`'

它奏效了。

更多信息:https://github.com/wting/autojump/issues/305

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。