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

时间:2012-04-16 13:42:15

标签: unix zsh

我有一个Z-shell配置,我在多台服务器和我的个人电脑上使用。在我的个人计算机上,我有一个可执行文件的别名,我们将调用foo。这是我的zshrc中该行的别名行:

alias foo=/path/to/foo

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

alias foo=/sever/path/to/foo

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

如果在个人电脑上:
    alias foo=/path/to/foo
其他:
    alias foo=/sever/path/to/foo

2 个答案:

答案 0 :(得分:1)

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

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

#}}}

感谢larsmans建议-x旗帜

答案 1 :(得分:0)

你不应该使用zsh特定的东西。 您可以使用主机名(或域名或使用zsh设置的变量主机名)并检查您的PC或服务器上是否存在。 然后分支。 这样可以避免在文件/ path / to / foo存在但是不正确的情况下创建的问题,这是larsmans的回答。