Home > Net >  How to share bash aliases across steps?
How to share bash aliases across steps?

Time:07-15

I am using the following workflow to test out bash aliases. I have defined a bash alias called lll in the first step that I am trying to re-use in the next step. However, the workflow fails in the second step as the lll is not found. So, is there a way to share aliases across steps?

on:
  push:
    branches:
      - master
  release:
    types:
      - created

jobs:
  ossie_job:
    runs-on: ubuntu-latest
    name: Audit Python dependencies 
    steps:
      - name: Print a greeting
        run: |
          shopt -s expand_aliases
          alias lll=ls
          echo 'alias lll=ls' >> ~/.bashrc
          lll
      - name: Test alias
        shell: bash {0}
        run: |
          shopt -s expand_aliases
          source ~/.bashrc
          lll

CodePudding user response:

In Github Actions the default ~/.bashrc has this in the beginning:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

So source ~/.bashrc basically does nothing since it's not in an interactive shell.

You can use a tmp file like this:

steps:
  - shell: bash
    run: |
      rc=/tmp/rcfile
      echo 'shopt -s expand_aliases' > $rc
      echo 'alias ll="ls -l" ' >> $rc

  - shell: bash
    run: |
      source /tmp/rcfile
      ll    
  • Related