What is "ushell", a CLI tool that ships with Unreal Engine? How to use it?

Hiya,

Looking through Unreal’s source tree I noticed that there is small CLI tool called ushell located under following directory: [UnrealEngine]/Engine/Extras/ushell

Based on its README.txt, it looks very similar to ue4cli which is a wrapper for platform-dependant build scripts.

I use ue4cli daily and really like it, however said project is stale for past few years and full of bugs so I was searching for some alternatives and thinking about writing something similar on my own. ushell might be what I was looking for, as it still seems to be updated with the latest commit to 5.4 branch being only few days old.


However, besides the source code, I was unable to find any information about this tool.
Googling, searching through Unreal Forum, nothing… like if it never existed at all…
I was only able to find this small note in UnrealBuildTool by ripgrep’ing the files.


The problem is that I’m unable to use this tool on my current Linux machine.

I tried to follow the guide by calling source [UnrealEngine]/Engine/Extras/ushell/ushell.sh from my project’s working directory, but I’m getting:

[UnrealEngine]/Engine/Extras/ushell/ushell.sh:36: permission denied: [UnrealEngine]/Engine/Extras/ushell/channels/flow/posix/boot.sh

I tried to fix it by using sudo source, but it seems that sudo don’t have access to source command.

This script is most likely failing because it tries to access the /tmp directory which is owned by the root. I might be able to fix it by redirecting the call to a different directory, but I don’t want to waste more of my time without even knowing what the thing does.


So what exactly is ushell? What it does? How can I use it? Where to seek any information about it?

There is literally no information about this tool, so I’ll be thankful for any kind of help.

Cheers!

UShell is a command-line interface to basically make it easier to do common things in Unreal via command line that would otherwise usually be a headache to invoke UAT or P4 commands, which are long and require you to remember their parameter names. Many programmers at Epic Games use it for quality of life. We’ve made it available to the public to use but it’s offered “as is”, we don’t offer support for it.

UShell has tab completion and wraps many common commands into much shorter and convenient aliases.

If you look at that Readme you linked, you’ll see some examples of how to use it.

  1. .build editor
  2. .build game ps4
  3. .build program UnrealInsights shipping
  4. .cook game ps4
  5. .stage game ps4
  6. .run editor
  7. .run game ps4 --trace -- -ExecCmds="Zippy Bungle Rainbow"
  8. .run program UnrealInsights shipping
  9. .p4 cherrypick 1234567
  10. .sln generate
  11. .info

You can write .help in the tool to see more help text. All the information about that tool currently available is in that Readme file and from UShell’s own help texts (try writing just .p4 or .build to see what the command does).