Σφάλματα διαδρομής και καταλόγου εργασίας — DedSec Project
Σφάλματα διαδρομών: cwd, quotes, symlinks και πεζά/κεφαλαία Αιτία και συμπτώματα Το No such file or directory μπορεί να εμφανιστεί παρότι το αρχείο υπάρχει αλλού: οι σχετικές διαδρομές…
Σφάλματα διαδρομών: cwd, quotes, symlinks και πεζά/κεφαλαία
Αιτία και συμπτώματα
Το No such file or directory μπορεί να εμφανιστεί παρότι το αρχείο υπάρχει αλλού: οι σχετικές διαδρομές ξεκινούν από το τρέχον working directory του process και όχι πάντα από τη θέση του script. Τα κενά και τα wildcard σύμβολα επηρεάζουν το shell. Οι συντομεύσεις shared storage διαφέρουν από το $HOME.
Αναπαραγωγή / διαγνωστικές εντολές
Εκτέλεσε σε δικό σου δοκιμαστικό περιβάλλον και έλεγξε τις διαδρομές πριν αλλάξεις αρχεία.
pwd -P
mkdir -p "$HOME/path-lab/sub folder"
printf 'ok\n' > "$HOME/path-lab/sub folder/sample.txt"
ls -l "$HOME/path-lab/sub folder/sample.txt"
cd "$HOME/path-lab"
printf 'Current directory: %s\n' "$PWD"
cat "sub folder/sample.txt"
# Script-relative paths in Bash can use dirname of BASH_SOURCE[0].
Επίλυση με βάση τα στοιχεία
Πριν αλλάξεις paths τύπωσε την απόλυτη διαδρομή και έλεγξε κάθε γονικό φάκελο με ls -ld. Βάλε εισαγωγικά σε μεταβλητές με διαδρομές. Το ~ δεν κάνει expansion μέσα σε quotes, ενώ το "$HOME/file" είναι σαφές. Σε Python χρησιμοποίησε pathlib.Path(file).resolve().parent για πόρους δίπλα στο script και Path.cwd() για την τρέχουσα θέση.
Πρακτικό εργαστήριο
Τρέξε το ίδιο script από τον δικό του κατάλογο και από το $HOME. Σύγκρινε relative και script-relative αναγνώσεις. Άλλαξε κεφαλαία σε όνομα αρχείου και δοκίμασε στο δικό σου filesystem· μην υποθέτεις ότι αγνοεί πεζά/κεφαλαία.