2 回答
TA貢獻1851條經驗 獲得超3個贊
除了在創建 shell 時使用C之外,我已經這樣做了,在我的例子中,我使用了一個帶有chdir函數的庫,它看起來像這樣:
static void min_cmd_cd_av(char *av, char ***env)
{
char *tmp;
if (av && 0 == chdir(av))
{
tmp = min_env_get_val(env, "PWD=");
min_env_set_path(env, "OLDPWD=", tmp);
free(tmp);
tmp = (char *)ft_memalloc(4098 * sizeof(char *));
getcwd(tmp, 4098);
min_env_set_path(env, "PWD=", tmp);
ft_strdel(&tmp);
}
else
ft_printf("\e[91mERROR: Invalid Path/Permissions\e[96m\n");
}
int min_cmd_cd(int ac, char **av, char ***env)
{
char *tmp;
if (ac <= 1)
{
tmp = min_env_get_val(env, "HOME=");
if (tmp)
{
min_cmd_cd_av(tmp, env);
ft_strdel(&tmp);
}
else
ft_printf("\e[91mERROR: Home variable not found!\e[96m\n");
}
else if (ac > 1)
{
min_shell_path(&av, env);
min_cmd_cd_av(av[1], env);
}
return (0);
}
我使用 shell 環境來更新 PWD 和 OLDPWD,這也允許您將其實現到您的 shell 中。
添加回答
舉報
