Builtin Commands

fortsh includes 58 builtin commands. Builtins are executed directly by the shell without spawning external processes.

Quick Reference

Navigation & Directories

CommandDescriptionSource
cdChange directorybuiltins.f90:builtin_cd
pwdPrint working directorybuiltins.f90:builtin_pwd
pushdPush directory onto stackdirectory_builtin.f90
popdPop directory from stackdirectory_builtin.f90
dirsShow directory stackdirectory_builtin.f90
prevdPrevious directory (fish-style)builtins.f90
nextdNext directory (fish-style)builtins.f90
dirhDirectory historybuiltins.f90

Variables & Environment

CommandDescriptionSource
exportExport variablesbuiltins.f90:builtin_export
unsetUnset variablesbuiltins.f90:builtin_unset
readonlyMark variables readonlybuiltins.f90:builtin_readonly
declareDeclare variablesbuiltins.f90:builtin_declare
localFunction-local variablesbuiltins.f90:builtin_local
printenvPrint environmentbuiltins.f90:builtin_printenv
shiftShift positional paramsbuiltins.f90:builtin_shift

I/O & Output

CommandDescriptionSource
echoPrint textbuiltins.f90:builtin_echo
printfFormatted outputprintf_builtin.f90
readRead inputread_builtin.f90

Job Control

CommandDescriptionSource
jobsList jobsbuiltins.f90:builtin_jobs
fg / bgForeground/background jobbuiltins.f90:builtin_fg
killSend signalbuiltins.f90:builtin_kill
waitWait for jobsbuiltins.f90:builtin_wait
coprocCoprocessbuiltins.f90:builtin_coproc

Scripting & Control

CommandDescriptionSource
exitExit shellbuiltins.f90:builtin_exit
source / .Execute filebuiltins.f90:builtin_source
evalEvaluate stringeval_builtin.f90
execReplace shellbuiltins.f90:builtin_exec
returnReturn from functionbuiltins.f90:builtin_return
breakBreak from loopbuiltins.f90:builtin_break
continueContinue loopbuiltins.f90:builtin_continue

Command Identification

CommandDescriptionSource
typeShow command typecommand_builtin.f90
whichFind commandcommand_builtin.f90
commandExecute bypassing functionscommand_builtin.f90
hashCommand cachebuiltins.f90:builtin_hash

Testing & Conditionals

CommandDescriptionSource
test / [Test expressiontest_builtin.f90
[[Advanced testadvanced_test.f90
getoptsParse optionsgetopts_builtin.f90

Aliases & Abbreviations

CommandDescriptionSource
alias / unaliasDefine/remove aliasbuiltins.f90:builtin_alias
abbrAbbreviations (fish-style)builtins.f90:builtin_abbr

History & Completion

CommandDescriptionSource
historyCommand historybuiltins.f90:builtin_history
fcEdit historybuiltins.f90:builtin_fc
completeDefine completionsbuiltins.f90:builtin_complete
compgenGenerate completionsbuiltins.f90:builtin_compgen

Shell Options

CommandDescriptionSource
setSet optionsshell_options.f90
shoptShell optionsshell_options.f90
configConfigurationbuiltins.f90:builtin_config

Signals

CommandDescriptionSource
trapSet signal handlersbuiltins.f90:builtin_trap

System & Debugging

CommandDescriptionSource
umaskFile creation maskbuiltins.f90:builtin_umask
ulimitResource limitsbuiltins.f90:builtin_ulimit
timesProcess timesbuiltins.f90:builtin_times
letArithmetic evaluationbuiltins.f90:builtin_let
perfPerformance metricsbuiltins.f90:builtin_perf
memoryMemory statisticsbuiltins.f90:builtin_memory

Special

CommandDescription
:Null command (no-op)
helpDisplay help

Implementation Notes

All builtins are implemented in Fortran and execute within the shell process. Source files are located in:

  • src/execution/builtins.f90 - Core builtins
  • src/scripting/*.f90 - Specialized builtins (printf, read, test, etc.)

Return values follow POSIX conventions:

  • 0 - Success
  • 1 - General failure
  • 2 - Usage/syntax error
  • 127 - Command not found (for exec, source)