Почему `env` не находит мой исполняемый файл?

Ну, вы, конечно, могли бы разобрать их, скажем, в массив хэшей, но тогда что?

#!/usr/bin/env perl
use strict;
use warnings;

my @abcs;

while (<>) {
  my ($name, @values) = split ' ';
  if (m/^ABC\s/) {
    push @abcs, { $name => \@values }
  } else {
    $abcs[-1]->{$name} = \@values;
  }
}

use Data::Dumper; warn Dumper \@abcs;
print $abcs[0]{BBC}[3], "\n";
-121--251176-

Если вы убиваете только его шды, может быть, останутся процессы, которые смогут пережить разрушение их виртуального терминала.

Если вы хотите чистого пути, вы можете убить все его процессы следующим синглелином:

for i in `ps uxa|grep ^roxa|sed 's/\+//g'|awk '{print $2}'`;do kill -9 $i;done

Суть этого синглелинового сценария находится между ", где не очень сложная труба обрабатывает ваш выход ps uxa , и извлекает его из него.

-121--116246-

Ввод команды make install может привести к установке скрипта Sys V init в нужном месте.

2
24.04.2018, 14:21
2 ответа

Если выход

echo 1l|ed test.rb

заканчивается на \r$у вас есть <carriage return>перед<line-feed>

Строки в unix завершаются строкой -, поэтому envищет «winruby\r», а не «winruby».

отредактируйте свой скрипт в среде unix с помощью vi, edили nanoи удалите '\r' в конце строки.

Редактировать:

Я могу создать тот же результат, что и вы, если мой PATH установлен, но не настроен для экспорта.

# PATH is set but not exported
jo@hostname:~/tmp$ winruby --version
running winruby --version
jo@hostname:~/tmp$ env winruby --version
env: winruby: No such file or directory

# print variables starting with PATH
jo@hostname:~/tmp$ set |grep -e ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jo/tmp/bin

# print exported variables starting with PATH
jo@hostname:~/tmp$ env | grep -e ^PATH

# Oops ! nothing, so exporting PATH
jo@hostname:~/tmp$ export PATH
jo@hostname:~/tmp$ env | grep -e ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jo/tmp/bin

# Final check
jo@hostname:~/tmp$ env winruby --version
running winruby --version
2
27.01.2020, 22:17

Другое возможное решение:

Убедитесь, что ваша переменная PATH не использует " ~" для указания пути, так как env не сможет правильно его разрешить.

Так, например, если у вас

export PATH="$PATH:~/bin"

Измените его на

export PATH="$PATH:$HOME/bin"
2
18.12.2020, 17:10

Теги

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