【发布时间】:2013-06-08 16:53:37
【问题描述】:
我查看了 Stack Overflow 上所有类似的问题,并在他们的文档中尝试了很多东西。我目前的尝试如下。
我想要完成的是基于计算机用户的不同行为。我有一台工作计算机和一台家用计算机,当我在命令行中输入“代码”时,我希望工作计算机转到不同的目录,而不是我在家里输入它时想要的目录。我试过这个(我的工作用户名是 afk,家是 sfk):
function code
set result (dirh)
if [contains "sfk" $result]
cd ~/rails
else if [contains "afk" $result]
cd ~/code
else
echo $result
end
end
目前,这是在抱怨“未知命令包含 Users/sfk/.config/fish/”(当我输入这个时,我的 PWD 是 Users/sfk/.config/fish/)。我认为可能 contains 仅用于列表,但文档对此并不是特别清楚?知道我该怎么做吗?
编辑
刚刚尝试过,虽然它不再出错,但它最终出现在 else 情况下,它不应该,导致我的用户是 sfk,它包含在 dirh 字符串中:
function code
set result (dirh)
if test (contains "sfk" $result)
cd ~/rails
else if test (contains "afk" $result)
cd ~/code
else
echo $result
end
end
【问题讨论】:
-
我不明白?如果您有 2 个不同的用户,那么为什么不简单地创建 2 个单独的
code函数? -
冗长的答案 - 因为我 90% 的鱼功能是相同的,我在 github 上有它们,所以我可以在两台计算机之间同步任何新的鱼功能,所以它们的行为相同,但这个功能不同在它们之间,所以与其尝试让 .gitignored 文件具有特定于计算机的功能,我希望只是让功能根据计算机用户名表现不同
-
您是否考虑过设置全局环境变量来指定您需要的文件夹路径,即在您的主文件
.configrc中创建并将其加载到您的fish.config中。这种方法会更加普遍。 -
我没有,这有效。谢谢!
标签: fish