Unix 有没有办法为Z-shell中的不同计算机的不同路径定义通用别名?

Unix 有没有办法为Z-shell中的不同计算机的不同路径定义通用别名?,unix,zsh,Unix,Zsh,我有一个Z-shell配置,可以在多台服务器和我的个人计算机上使用。在我的个人计算机上,我有一个可执行文件的别名,我们称之为foo。以下是我的zshrc中指向此程序别名的行: alias foo=/path/to/foo 在几个服务器上,foo的路径不同,我无法将其移动到像~/bin这样的公共目录: alias foo=/sever/path/to/foo 我需要所有机器上的别名都是foo,所以我不能创建两个单独的别名,例如foo和fooserver。有没有办法让Z-shell检测我在哪台机器上

我有一个Z-shell配置,可以在多台服务器和我的个人计算机上使用。在我的个人计算机上,我有一个可执行文件的别名,我们称之为
foo
。以下是我的zshrc中指向此程序别名的行:

alias foo=/path/to/foo

在几个服务器上,
foo
的路径不同,我无法将其移动到像
~/bin
这样的公共目录:

alias foo=/sever/path/to/foo

我需要所有机器上的别名都是foo,所以我不能创建两个单独的别名,例如foo和fooserver。有没有办法让Z-shell检测我在哪台机器上,并自动将别名更改为foo?天真地说,类似于:

如果在个人计算机上:
别名foo=/path/to/foo

其他:

别名foo=/sever/path/to/foo

您不应该使用任何特定于zsh的内容。 您可以使用hostname(或domainname,或使用zsh设置的变量hostname)并检查是否在您的pc或服务器上。 然后分支。
如果文件/path/to/foo存在,但不是larsmans答案所创建的正确文件,则可以避免产生问题。

对于遇到此问题的任何其他人,我能找到的最佳解决方案是:

#{{{ Alias foo if it is in a specific location
if [[ -x ="/path/to/foo" ]]; then
    alias foo='/path/to/foo'
fi

#}}}

感谢larsmans建议使用
-x
标志

我不是一个zsh用户,但是你不能检查
[-f/path/to/foo]
和分支吗?谢谢,这很好。仔细想想,
[-x/path/to/foo]
会更好。谢谢。你能举个例子吗?我不太清楚怎么做。