【发布时间】:2011-04-14 02:57:32
【问题描述】:
我正在用 C 编写一个简单的 Unix shell。这是我目前所拥有的。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main() {
char x[256], y[256], z[256];
while (1) {
getcwd(y, sizeof(y));
printf("%s$ ", y);
fgets(x, sizeof(x), stdin);
if (x[0] == 'c' && x[1] == 'd' && x[2] == ' ') {
sscanf(x, "cd %s", &z);
chdir(z);
}
else if (strcmp(x, "exit\n") == 0) break;
else system(x);
}
return 0;
}
我想做的是让波浪字符 (~) 和 $HOME 可以互换。我想我可以用一个简单的查找和替换功能来做到这一点。有谁知道这样的事情吗?
【问题讨论】:
-
要模拟一个真实的外壳,您不希望它们可以互换——那么您将根本无法输入波浪号。您可以先将单词开头的 unquoted 波浪号替换为
$HOME的值。
标签: shell unix environment-variables tilde