linux — как узнать, в какой директории находится текущий bash скрипт

Простой вариант, но не защищённый от символьных ссылок:

REAL_SCRIPT_DIR = `dirname \`readlink -f $0\``

Сложный вариант, превращающий ссылки в реальные пути:

#!/bin/bash

# Temporarily save the old values so we can restore them after execution
SOURCE_TEMP=$SOURCE
DIR_TEMP=$DIR

SOURCE="${BASH_SOURCE[0]}"
# Go through all symlinks to find the ultimate location of the source file
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
# Get an absolute path to the directory that contains this file
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

###
# YOUR CODE HERE
###

# Restore old values
SOURCE=$SOURCE_TEMP
DIR=$DIR_TEMP

Leave a Reply