Suppress output in non-interactive shells

Add is_interactive_shell() helper and gate all user-visible
echo/debug output behind it so that non-interactive invocations
(scripts, cron, ssh commands) stay silent. Move functions.sh
source earlier in bashrc so helpers are available sooner.
This commit is contained in:
lachtan
2026-03-15 14:25:12 +01:00
parent e351f2e924
commit 7a344b82dd
2 changed files with 12 additions and 5 deletions

7
bashrc
View File

@@ -7,13 +7,16 @@ export LWS=$WORKSPACE
LWS_DEBUG=${LWS_DEBUG:-0}
LWS_FAST=${LWS_FAST:-0}
echo "Linux Workspace initialization"
source "$LWS/functions.sh"
if [[ -z $LC_ALL ]]; then
export LC_ALL=en_US.UTF-8
fi
source "$LWS/functions.sh"
if is_interactive_shell; then
echo "Linux Workspace initialization"
fi
source_directory_sh "$LWS/rc"
source_directory_sh "$HOME/.bashrc.d"

View File

@@ -5,6 +5,10 @@ if [ -z "$time_ms" ]; then
readonly time_ms='date +%s%3N'
fi
function is_interactive_shell() {
[[ $- == *i* ]]
}
function is_fast_init() {
(( $LWS_FAST ))
}
@@ -14,7 +18,7 @@ function is_slow_init() {
}
function xlog() {
if true_false "$LWS_DEBUG"; then
if is_interactive_shell && true_false "$LWS_DEBUG"; then
echo "$@"
fi
}
@@ -100,11 +104,11 @@ function source_directory() {
xlog "LOAD DIR $mask"
for file in $mask; do
if [[ -e "$file" ]]; then
if (( $LWS_DEBUG )); then
if is_interactive_shell && (( $LWS_DEBUG )); then
start=$($time_ms)
source "$file"
stop=$($time_ms)
echo "LOAD FILE $file $((stop - start)) ms"
xlog "LOAD FILE $file $((stop - start)) ms"
else
source "$file"
fi