【问题标题】:Passing arguments to another shell from tcsh从 tcsh 将参数传递给另一个 shell
【发布时间】:2021-01-22 03:53:03
【问题描述】:

我刚刚安装了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

【问题讨论】:

  • 从. ~/.bashrc 和bash 中寻求什么信息?可以直接设置别名吗? alias j "cd ~/\!:1"

标签: bash unix tcsh autojump


【解决方案1】:

我试过了:

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

它成功了。

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

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2012-09-25
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多