Post History
I have a shell script with a syntax compatible to both bash and zsh, except for a section that has zsh specific syntax that throws syntax errors if sourced from bash. Is there an easy way to escap...
#4: Post edited
How to not source a part of a bash script?
- A shell script that can run under different shells
I have a shell script with a syntax compatible to both `bash` and `zsh`, except for a section that has zsh specific syntax that throws syntax errors if sourced from bash. Is there **an easy way** to escape such section when using bash? --- The script is a bash function that sources all the files in a directory. It works fine from zsh (and it is irrelevant to the question). ```shell #!/usr/bin/env bash shell=$(ps -p $$ -oargs=) if [ $shell = "bash" ]; then for f in ~/.functions.d/*.sh; do source $f; done elif [ $shell = "zsh" ]; then for f (~/.functions.d/**/*.sh) source $f fi ``` The error raised when sourcing it in `bash` is: scr: line 8: syntax error near unexpected token `(' scr: line 8: ` for f (~/.functions.d/**/*.sh) source $f' --- Relevant links: - [This same question in Stack Overflow.](https://stackoverflow.com/questions/70382141/how-to-prevent-sourcing-a-part-of-a-bash-script) - [Unix & Linux: Source only part of a script from another script?](https://unix.stackexchange.com/questions/242854/source-only-part-of-a-script-from-another-script) - [Stack Overflow: Using source to include part of a file in a bash script.](https://stackoverflow.com/questions/22183903/using-source-to-include-part-of-a-file-in-a-bash-script)
#3: Post edited
I have a shell script with a syntax compatible to both `bash` and `zsh`, except for a section that has zsh specific syntax. that throws syntax errors if sourced from a bashis there **an easy way** to escape such section when using bash.- ---
The script is a bash function that sources all the files in a directory. it works fine form zsh (and it is irrelevant to the question)- ```shell
- #!/usr/bin/env bash
- shell=$(ps -p $$ -oargs=)
- if [ $shell = "bash" ]; then
- for f in ~/.functions.d/*.sh; do source $f; done
- elif [ $shell = "zsh" ]; then
- for f (~/.functions.d/**/*.sh) source $f
- fi
- ```
the error is produced by the 7th line, when sourcing it in `bash`- ---
relevant links- https://unix.stackexchange.com/questions/242854/source-only-part-of-a-script-from-another-script- https://stackoverflow.com/questions/22183903/using-source-to-include-part-of-a-file-in-a-bash-script
- I have a shell script with a syntax compatible to both `bash` and `zsh`, except for a section that has zsh specific syntax that throws syntax errors if sourced from bash.
- Is there **an easy way** to escape such section when using bash?
- ---
- The script is a bash function that sources all the files in a directory. It works fine from zsh (and it is irrelevant to the question).
- ```shell
- #!/usr/bin/env bash
- shell=$(ps -p $$ -oargs=)
- if [ $shell = "bash" ]; then
- for f in ~/.functions.d/*.sh; do source $f; done
- elif [ $shell = "zsh" ]; then
- for f (~/.functions.d/**/*.sh) source $f
- fi
- ```
- The error raised when sourcing it in `bash` is:
- scr: line 8: syntax error near unexpected token `('
- scr: line 8: ` for f (~/.functions.d/**/*.sh) source $f'
- ---
- Relevant links:
- - [This same question in Stack Overflow.](https://stackoverflow.com/questions/70382141/how-to-prevent-sourcing-a-part-of-a-bash-script)
- - [Unix & Linux: Source only part of a script from another script?](https://unix.stackexchange.com/questions/242854/source-only-part-of-a-script-from-another-script)
- - [Stack Overflow: Using source to include part of a file in a bash script.](https://stackoverflow.com/questions/22183903/using-source-to-include-part-of-a-file-in-a-bash-script)
#2: Post edited
- I have a shell script with a syntax compatible to both `bash` and `zsh`, except for a section that has zsh specific syntax. that throws syntax errors if sourced from a bash
- is there **an easy way** to escape such section when using bash.
- ---
The script is a bash function that sources all the files in a directory. it works fine form zsh (and it is irreverent to the question)- ```shell
- #!/usr/bin/env bash
- shell=$(ps -p $$ -oargs=)
- if [ $shell = "bash" ]; then
- for f in ~/.functions.d/*.sh; do source $f; done
- elif [ $shell = "zsh" ]; then
- for f (~/.functions.d/**/*.sh) source $f
- fi
- ```
- the error is produced by the 7th line, when sourcing it in `bash`
- ---
revilement links- - https://unix.stackexchange.com/questions/242854/source-only-part-of-a-script-from-another-script
- - https://stackoverflow.com/questions/22183903/using-source-to-include-part-of-a-file-in-a-bash-script
- I have a shell script with a syntax compatible to both `bash` and `zsh`, except for a section that has zsh specific syntax. that throws syntax errors if sourced from a bash
- is there **an easy way** to escape such section when using bash.
- ---
- The script is a bash function that sources all the files in a directory. it works fine form zsh (and it is irrelevant to the question)
- ```shell
- #!/usr/bin/env bash
- shell=$(ps -p $$ -oargs=)
- if [ $shell = "bash" ]; then
- for f in ~/.functions.d/*.sh; do source $f; done
- elif [ $shell = "zsh" ]; then
- for f (~/.functions.d/**/*.sh) source $f
- fi
- ```
- the error is produced by the 7th line, when sourcing it in `bash`
- ---
- relevant links
- - https://unix.stackexchange.com/questions/242854/source-only-part-of-a-script-from-another-script
- - https://stackoverflow.com/questions/22183903/using-source-to-include-part-of-a-file-in-a-bash-script
#1: Initial revision
How to not source a part of a bash script?
I have a shell script with a syntax compatible to both `bash` and `zsh`, except for a section that has zsh specific syntax. that throws syntax errors if sourced from a bash is there **an easy way** to escape such section when using bash. --- The script is a bash function that sources all the files in a directory. it works fine form zsh (and it is irreverent to the question) ```shell #!/usr/bin/env bash shell=$(ps -p $$ -oargs=) if [ $shell = "bash" ]; then for f in ~/.functions.d/*.sh; do source $f; done elif [ $shell = "zsh" ]; then for f (~/.functions.d/**/*.sh) source $f fi ``` the error is produced by the 7th line, when sourcing it in `bash` --- revilement links - https://unix.stackexchange.com/questions/242854/source-only-part-of-a-script-from-another-script - https://stackoverflow.com/questions/22183903/using-source-to-include-part-of-a-file-in-a-bash-script