dcli
  • Introduction
  • What does DCli do?
  • Install DCli
    • Installing on Windows
  • Writing your first CLI app
  • Add DCli to your project
  • pub.dev
  • github
  • Dart basics
    • Dart lambda functions
    • Function Arguments
    • Futures
    • stdin/stdout/stderr a primer
  • Tour
    • Overview
    • Using DCli functions
    • User input
      • Ask Validators
    • Displaying information
    • Managing Files And Directories
    • Environment variables
    • Calling apps
    • Redirecting output
    • Command Line Arguments
    • Paths
    • Glob Expansion
    • Piping
    • Locking
    • Fetch
    • The evils of CD
    • Assets/Resources
    • Cross Platform
      • Posix
      • Windows
      • Docker
        • Detecting Docker
        • Add DCli to a Docker Container
        • Example DCli app in Docker
  • Elevated Privileges
    • Sudo
  • Performance
  • Dependency Management
    • Dependency Management
    • Pubspec Managment
  • DCli Tools
    • DCli tools
    • Use a shebang #!
    • DCli Compile
    • DCli Clean
    • DCli Create
    • DCli Doctor
    • DCli Install
    • DCli Run
    • DCli Warmup
    • DCli Pack
    • Upgrade DCli
  • Internal Workings
    • Internal Workings
    • waitForEx
  • Contributing
    • Creating a release
    • Running Unit tests
    • Implemention support for a shell
    • Templates
  • References
  • Examples
    • Projects
    • Code
      • hello world.
      • dcompress
      • dpath
      • dmysql
      • dshell
      • dwhich
      • dipaddr
      • gnome launcher
  • Articles
    • build CLI apps in dart - part 1
    • build CLI apps in dart - part 2
    • Dealing with permissions
    • 3rd Party console packages
  • Dart on Linux - the perfect CLI tooling
  • Improving your build environment
    • Existing tooling
    • Building with Dart
    • A home for your build tools
  • Olivier Revial - CLI apps made easy
  • Video: package of the week
Powered by GitBook
On this page

Was this helpful?

  1. DCli Tools

Use a shebang #!

A Shebang is a special entry on the first line of your script that tells the OS which command interpreter to use to execute your script.

Shebangs are currently only supported on Linux and OSx.

By adding a Shebang to the start of you Dart script you can directly run a script from the cli.

Without a Shebang:

dart hello.dart

With a Shebang:

./hello.dart

It's a small difference but rather useful particularly if you are calling one script from another.

To use a shebang you must have activated the optional DCli command line tools.

You do NOT need the DCli tools if you just want to use the DCli API but they are required if you want to use the Shebang feature.

If you want to use the DCli tools you must first activate them.

dart pub global activate dcli
dcli install

So let's look at how hello.dart looks with a shebang added.

The Shebang #! must be the very first line!

#! /usr/bin/env dcli

/// import DCli's global functions 
import 'package:dcli/dcli.dart';

void main() {
  print('Hello World');
}

On Linux and OSX you must mark the file as executable for the Shebang to work.

Mark the file as executable:

chmod +x  hello.dart

if you used the dcli create <script> command then DCli will have already set the execute permission on your script and added the shebang!

Now run the script from the cli:

cli> ./hello.dart
Hello world
cli>

You're now officially in the land of DCli magic.

Faster you say?

PreviousDCli toolsNextDCli Compile

Last updated 2 years ago

Was this helpful?

Read the section on your script to make it run even faster.

compiling