Skip to main content

A python module for sourcing variables from shell scripts

Project description

python-shell-source

A python module for sourcing variables from shell scripts.

Installation

You can install this package with pip or conda.

$ pip install shell-source
$ conda install -c abrahammurciano shell-source

Documentation

The full documentation is available here

Usage

This module provides a function source which attempts to mimic the shell's source command.

The purpose of this function is to allow you to run a shell script which sets either environment variables or local variables, and then give you access to those variables. Normally this is not a straght-forward task, but this function achieves it by running the script in its intended shell then injecting commands to the shell to write its local variables and its environment variables to a temporary file. Finally it reads the temporary file and parses it to return to you with exactly the data you asked for.

Basic Usage

If you just pass a script and an interpreter you'll get back all the environment variables and local variables visible to and set by the script.

>>> from shell_source import source
>>> variables = source("path/to/script.sh", "bash")
>>> # It returns a dictionary of local and environment variables known by the script.
>>> variables
{"USER": "abraham", "PATH": "/bin:/usr/bin", ..., "foo": "bar"}

Requesting Specific Variables

If you specify the argument variables, then only those variables you passed will be present as keys in the returned dictionary.

>>> source("path/to/script.sh", "zsh", variables=("foo", "bar", "biz"))
{"foo": ..., "bar": ..., "biz", ...}

Ignoring Local Variables

If you don't want to obtain any local variables set by the script, but only want the environment variables, you can pass ignore_locals=True.

Passing Arguments to the shell

If you want to pass arguments to the shell, for example -x or -e, you can pass it directly in the shell argument.

>>> source("path/to/script.sh", "bash -x")

Passing Arguments to the script

If you want to pass arguments to the script being sourced, you can pass them in the args argument.

>>> source("path/to/script.sh", "bash", args=("foo", "bar"))

Supporting Different Shells

This module has been tested to work with bash, zsh, and ksh out of the box. You can use any other shell that's somewhat posix compliant, but it it doesn't work, you may have to create a class derived from the Scripter class to indicate to source how to interact with the shell you want to use.

Some specialized implementations of Scripter are provided in shell_source.scripters for shells that are not posix compliant, such as csh, tcsh and fish.

For example, to use tcsh to source a script, you can use the CshScripter class like so:

>>> source("path/to/script.csh", "tcsh", scripter=CshScripter())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shell_source-3.0.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

shell_source-3.0.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file shell_source-3.0.0.tar.gz.

File metadata

  • Download URL: shell_source-3.0.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.7.16 Linux/5.15.0-1037-azure

File hashes

Hashes for shell_source-3.0.0.tar.gz
Algorithm Hash digest
SHA256 adbc3967c01aad4d8e94fa0c5a49dc6782689c003b639fc9af0f5ea822ab0543
MD5 fc3203d05b9071fdb2b58271a3032cd4
BLAKE2b-256 a80bc4ee6404c2039dad0afadcf2e54aa95d721b687c91c8ed73da59843b58b3

See more details on using hashes here.

File details

Details for the file shell_source-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: shell_source-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.7.16 Linux/5.15.0-1037-azure

File hashes

Hashes for shell_source-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 79e0bbe02e1de81b43336a739ec14033e85eb863b23d53139fb79eaffab28266
MD5 34a34f1b07db78b848cb9c83bbd7fec5
BLAKE2b-256 b39e0042ea43a1e4092969f25f675aab7d26150fb32ed5ff49568d587f317a67

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page