Unix 有没有办法为Z-shell中的不同计算机的不同路径定义通用别名?
我有一个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检测我在哪台机器上
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]
会更好。谢谢。你能举个例子吗?我不太清楚怎么做。