Skip to content

Instantly share code, notes, and snippets.

@yoh2
Created March 28, 2019 15:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yoh2/331af6410b81520d2d10883b6e81386a to your computer and use it in GitHub Desktop.
Save yoh2/331af6410b81520d2d10883b6e81386a to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
const char *get_dir(int argc, char *argv[])
{
if(argc <= 1)
{
const char *home = getenv("HOME");
return (home == NULL) ? "/" : home;
}
else
{
return argv[1];
}
}
const char *get_sh(void)
{
const char *sh = getenv("SHELL");
return (sh == NULL) ? "/bin/sh" : sh;
}
int main(int argc, char *argv[])
{
const char *dir = get_dir(argc, argv);
if(chdir(dir) != 0)
{
perror(dir);
return 1;
}
const char *sh = get_sh();
if(execlp(sh, sh, (const char *)NULL) != 0)
{
perror(sh);
return 1;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment