在 tcsh 中为 bash 脚本中定义的函数设置别名

Setting up an Alias in tcsh for a function defined in a bash script

我有一个带有别名的 cshrc 文件,我想在该文件中设置一个指向 bash 文件中定义的函数的别名。

bash 函数文件 AliasFunc:

function aaa() 
{

 echo Whosebug

}

示例 .cshrc 文件:

bash -c 'source AliasFunc'

alias bashfunc aaa

bashfunc #calling bashfunc

采购 .cshrc 文件导致以下错误:

bashfunc: Command not found.

你的 cshrc 文件中的 bash -c 'source AliasFunc' 所做的是启动一个新的 bash shell,加载 AliasFunc 文件,然后退出。它根本不会影响父 csh shell。

碰巧 bash 和 csh 都有一个 source 关键字,但这并不意味着它在某种程度上是 "compatible"。您现在要做的相当于尝试通过在 Perl 程序中启动一个新的 Python 进程来在 Perl 中导入一个 Python 模块。

你可以做的是:

$ alias bashfunc 'bash -c "source AliasFunc && aaa"'
$ bashfunc
Whosebug

每次调用 bashfunc 别名时,它将启动一个新的 bash shell,它将作为 AliasFunc 文件的来源 将立即 运行 bash aaa 函数。