#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
полезная острота, которая даст Вам полное имя каталога сценария, неважно, откуда это называют.
Это будет работать пока последний компонент пути, используемого, чтобы найти, что сценарий не является символьной ссылкой (ссылки каталога в порядке). Если Вы также хотите разрешить какие-либо ссылки на сам сценарий, Вам нужно многострочное решение:
#!/bin/bash SOURCE="${BASH_SOURCE[0]}" while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" SOURCE="$(readlink "$SOURCE")" [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located done DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
Этот последний будет работать с любой комбинацией псевдонимов,
source
,bash -c
, символьные ссылки, и т.д.Остерегаются: если Вы
cd
к различному каталогу прежде, чем выполнить этот отрывок, результат может быть неправильным!кроме того, не упустите
$CDPATH
глюки , и выходные побочные эффекты stderr, если пользователь энергично переопределил CD для перенаправления вывода к stderr вместо этого (включая escape-последовательности, такой, звоняupdate_terminal_cwd >&2
на Mac). При добавлении>/dev/null 2>&1
в конце Вашегоcd
команда будет заботиться об обеих возможностях., Чтобы понять, как это работает, попытайтесь выполнить это больше подробной формы:
#!/bin/bash SOURCE="${BASH_SOURCE[0]}" while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink TARGET="$(readlink "$SOURCE")" if [[ $TARGET == /* ]]; then echo "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'" SOURCE="$TARGET" else DIR="$( dirname "$SOURCE" )" echo "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')" SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located fi done echo "SOURCE is '$SOURCE'" RDIR="$( dirname "$SOURCE" )" DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" if [ "$DIR" != "$RDIR" ]; then echo "DIR '$RDIR' resolves to '$DIR'" fi echo "DIR is '$DIR'"
И это распечатает что-то как:
SOURCE './scriptdir.sh' is a relative symlink to 'sym2/scriptdir.sh' (relative to '.') SOURCE is './sym2/scriptdir.sh' DIR './sym2' resolves to '/home/ubuntu/dotfiles/fo fo/real/real1/real2' DIR is '/home/ubuntu/dotfiles/fo fo/real/real1/real2'
Решение, которое я в конце концов придумал, заключалось в том, чтобы просто установить Aptana Studio, PHP IDE, основанную на Eclipse, автономная версия которой может успешно сосуществовать с обычным Eclipse на той же машине.
Щелкните правой кнопкой мыши свой проект, «Настроить» (он находится внизу списка) -> Добавить поддержку PHP ...
После того, как это будет сделано, вы должны увидеть маленький символ P в значок проекта.
Просто создайте новый проект с помощью мастера и выберите вариант PHP. После того, как Eclipse узнает, что ваш проект на самом деле основан на PHP, он покажет вам все возможности.
Если у вас уже есть проект, просто откройте перспективу PHP.
Однажды у меня была похожая проблема. Eclipse работал с JRE 1.4, и кажется, что для запуска PDT требуется JRE 1.5 или новее. Я перешел на Java 1.6, и проблема была решена.
Иногда я сталкиваюсь с этим с плагинами eclipse.
Вы пытались удалить его, удалить банку и файлы из eclipse / plugins и eclipse / features, а затем снова установить?
] Если вам не хочется этого делать. Попробуйте установить его в чистом экземпляре eclipse, и если он работает, то это просто проблема конфигурации с eclipse.
Возможно, вы также не установили все инструменты.
Чтобы иметь поддержку PHP в проекте eclipse, вам необходимо добавить в проект PHPNature. Это своего рода параметр конфигурации проекта eclipse. Когда вы создаете новый проект PHP с помощью мастера, проверьте файл .project в каталоге нового проекта. Есть строчка PHPNature. Скопируйте эту строку в .project вашего java-проекта. Другое решение - разделить код java и php в разных проектах, каждый из которых создается правым мастером.