从 tcsh 向另一个 shell 传递参数
Passing arguments to another shell from tcsh
我刚刚安装了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 ' | 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 {,}' | 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`'
成功了。
我刚刚安装了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 ' | 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 {,}' | 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`'
成功了。