Рекурсивный поиск двоичного файла в родительском каталоге текущего каталога через иерархический $PATH.

Вам необходимо установить ssh-сервер на Ubuntu:

sudo apt-get install openssh-server

Теперь запустите и включите ssh-сервер debian для запуска при перезагрузке системы.

systemctl start ssh.service

systemctl enable ssh.service

Также запустите команду netstat, чтобы убедиться, что порт 22 ssh открыт и работает.

netstat -tulnp | grep 22

затем попробуйте получить доступ...

0
01.04.2020, 03:56
1 ответ

Я понимаю, что вас не устраивает только

PATH="./mybin:../mybin:../../mybin:../../../mybin:$PATH"

до некоторого ограничения, такого как 8 или около того подкаталогов -.

Вместо того, чтобы загрязнять и нарушать ваш обычный поиск команд, я предлагаю вам использовать короткую оболочку, чтобы рекурсивный поиск выполнялся только для команд с ее префиксом.

Напр. k fooпопытается найти ./mybin/foo, ../mybin/fooи т. д., но просто fooбудет искаться в $PATH, как обычно.

Но я не использую рыбу и понятия не имею, как это можно написать на языке рыбьей раковины. С bash/ksh/zsh это может быть что-то вроде:

function k {
    typeset p=. cmd=$1; shift
    while
        typeset e=$p/mybin/$cmd
        if [ -x "$e" ]; then "$e" "$@"; return; fi 
        [ ! "$p" -ef / ]
    do
        p=../$p
    done
    echo >&2 "k: not found: $cmd"; return 1
}

Если это сработает, вы можете превратить его в отдельный исполняемый скрипт, вместо того, чтобы пытаться переводить его в fish:

#! /bin/bash
p=. cmd=$1; shift
while
    e=$p/mybin/$cmd
    if [ -x "$e" ]; then exec "$e" "$@"; fi
    [ ! "$p" -ef / ]
do
    p=../$p
done
echo >&2 "k: not found: $cmd"; exit 1
0
19.03.2021, 02:31

Теги

Похожие вопросы