Achei sua pergunta interessante, então tentei descobrir como fazer isso.
Pensei nisso: crie um script que possa ser excluído depois de ser executado. Desta forma, o roteiro poderia fazer o seu trabalho e então ... adeus!
Aqui está o código
#!/bin/bash
# Test script based on informations found on
# http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in
# trying to understand if it's possibile to achieve what asked on
# https://sobrelinux.info/questions/106389/how-to-run-a-script-only-a-single-time-ever"${BASH_SOURCE[0]}"
DIR="$( dirname "$SOURCE" )"
while [ -h "$SOURCE" ]
do
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
# We know the name of the script from 'basename $0'
NAME='basename $0'
# Merge them to have the full path to the script
FULL_PATH=$DIR/$NAME
echo $FULL_PATH
# Let's be a bit theatrical
echo "This script will self destruct in"
for ((i=5;i>0;i--))
do
echo $i
sleep 1
done
# Goodbye!
rm $FULL_PATH
Salve este código de teste e torne-o executável para testá-lo.
Lembre-se que se elimina quando é executado, por isso não se esqueça de fazer um backup antes de o testar!