CDプログラムはPOSIXと互換性がありますか?

CDプログラムはPOSIXと互換性がありますか?

ワイルドカードとシェル拡張は同じですか?私は書いてCを学んでいます。カスタマイズされた家POSIXも学んでいます。これで、ホームディレクトリを意味するPOSIX準拠があるかどうか疑問にcd -思います。~すべてのシェルがこれを実行できるわけではなく、cdコマンドに最小限のPOSIX準拠が必要かどうかはわかりません。私が使用する実装は

int do_cd(int argc, const char **argv) {
    const char *path;
    if (argc > 1) {
        path = argv[1];
    }
    else {
        path = getenv("HOME");
        if (path == NULL) {
            fprintf(stderr, "No HOME environment variable\n");
            return 1;
        }
    }
    if (chdir(path) < 0) {
        perror(path);
        return 1;
    }
    return 0;
}

ベストアンサー1

チルダ拡張シェルはコマンド処理の一部であり、拡張パスを引数としてcd処理しません。cd

POSIX要件cd -は次のとおりです。cd "$OLDPWD" && pwdOLDPWD 次の設定が必要です。cdPWDコマンドの実行時に存在する場合。

おすすめ記事