View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002310 | OpenFOAM | Patch | public | 2016-10-29 21:36 | 2019-07-16 14:45 |
Reporter | wyldckat | Assigned To | henry | ||
Priority | low | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Summary | 0002310: Sourcing etc/bashrc locally leads to problems | ||||
Description | Although several installation instructions refer to using the complete path when sourcing OpenFOAM's "etc/bashrc" file, long time users of OpenFOAM technology will more often than not use: source etc/bashrc This happened to me a few weeks ago, but I worked around it by running: source $PWD/etc/bashrc The problem is that the following script code in said file assumes the whole path is given and has no check for failure and subsequent bypass: export FOAM_INST_DIR=$(cd ${BASH_SOURCE%/*/*/*} && pwd -P) The tricky part now is that there are a few workarounds for generalization, but each has their own flaws: Hypothesis 1: export FOAM_INST_DIR=$(cd ${BASH_SOURCE%/*} && cd ../.. && pwd -P) Fails when we source from inside: source bashrc Hypothesis 2: export FOAM_INST_DIR=$(cd $(dirname $BASH_SOURCE)/../.. && pwd -P) Fails if "dirname" doesn't exist, relies on two sub-shells (small hit to performance?), but it's the most common solution found online, e.g.: - http://unix.stackexchange.com/a/216915 - http://stackoverflow.com/a/246128 Although most of them actually use "${BASH_SOURCE[0]}", which seems a bit strange... although that's what the manual indicates: https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html#index-BASH_005fSOURCE - i.e. it's an array. Hypothesis 3: Based on hypothesis #2, use 5-7 lines of code that checks if everything goes smoothly and handles things properly in case of failure. Given this seems like overkill, at least for now, I've disregarded this hypothesis. All of these hypothesis will fail due if the environment variable "CDPATH" gets in the way... but that's for another documentation-feature request, since it's along the lines of aliases breaking scripts. Either way, I'm attaching the updated scripts for 4.x and dev which use hypothesis #2: - "bashrc.v4" for "OpenFOAM-4.x/etc/bashrc" - "bashrc.dev" for "OpenFOAM-dev/etc/bashrc" | ||||
Tags | No tags attached. | ||||
|
|
|
|
|
Thanks Bruno Resolved in OpenFOAM-4.x by commit 423ac54eabed1a9df7cd906686a8499f4cf69719 Resolved in OpenFOAM-dev by commit cfcd1adacb3706ae667b013035edbbaa7a37e0a4 |
Date Modified | Username | Field | Change |
---|---|---|---|
2016-10-29 21:36 | wyldckat | New Issue | |
2016-10-29 21:36 | wyldckat | Status | new => assigned |
2016-10-29 21:36 | wyldckat | Assigned To | => henry |
2016-10-29 21:36 | wyldckat | File Added: bashrc.v4 | |
2016-10-29 21:36 | wyldckat | File Added: bashrc.dev | |
2016-11-04 13:29 | henry | Status | assigned => resolved |
2016-11-04 13:29 | henry | Resolution | open => fixed |
2016-11-04 13:29 | henry | Fixed in Version | => 4.x |
2016-11-04 13:29 | henry | Note Added: 0007089 | |
2019-07-16 14:45 | henry | Relationship added | related to 0003303 |