Как я могу получить путь к текущему запущенному сценарию оболочки (cshell linux) - PullRequest
0 голосов
/ 24 января 2020

Linux / CSHELL:

Как мне получить путь к csh скрипту, который получен?
Это не $ PWD. Скорее, путь к сценарию (файлу).

Версии / особенности:

% echo $ SHELL $ PLATFORM
/ tool / pandora / bin / t csh linux_3.10.0_64
ls -l / tool / pandora / bin / t csh
lrwxrwxrwx 1 pandora pandora 33 октября 20 2016 г. / tool / pandora / bin / t csh - > ../.package/tcsh-6.19.00/bin/tcsh

Здесь много примечаний для этого типа вещей. Но я не видел его для linux c -оболочки.

Заранее спасибо!

Пример:

У меня есть файл / home / myid / my_cshell. csh ...

set a = `readlink -f ${0}`
echo $a
echo ${0}

source /home/myid/my_cshell.csh
/tool/pandora/.package/tcsh-6.19.00/bin/tcsh
/tool/pandora/bin/tcsh

Это дает мне путь к t csh, а не /home/myid/my_cshell.csh

Сценарий выше работает нормально, если я csh это, но не источник его. Мне нужен путь к источнику файла.

1 Ответ

0 голосов
/ 24 января 2020

при условии, что у вас есть readlink доступно:

readlink -f "${0}"

должно работать. ${0} даст вам относительный путь, а readlink -f разрешит его по абсолютному пути.

Должен быть какой-то способ ссылки на файл ... Если нет, то как его можно найти в первое место? Поэтому я предполагаю, что проблема в том, что ${0} ссылается на местоположение файловой системы родителя, а не на исходный файл. В этом случае readlink -f <file> все еще должен работать, но, возможно, сначала попытайтесь вызвать его, а затем передать результат при запуске source. Вот так:

main. csh:

#!/bin/csh

set p=`readlink -f source.csh`
source source.csh "${p}"

source. csh:

#!/bin/csh
set pmain=`readlink -f "${0}"`
echo "my path is ${1}. main.csh's path is ${pmain}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...