Можно добавить все подкаталоги при добавлении каталога в $ PATH

Просто используйте команду find с именем каталога. Например, чтобы просмотреть файлы и все файлы в папках в вашем домашнем каталоге, используйте

find ~

Проверьте справочную man-страницу поиска для команды find

Также проверьте поиск информации GNU страницы с помощью команды info find в терминале.

7
задан 3 April 2011 в 09:34

32 ответа

Этот скрипт использует tree ...

sudo apt-get install tree

Вы можете изменить глубину каталогов, изменив -L 1, и вы можете выбрать, использовать или не использовать ~/ ...

UPDATE 2: .. модифицировал скрипт, чтобы заменить только ведущий / home / user / (не «any») .. и добавил args. .

UPDATE 2 Добавлена ​​проверка: .. Не добавляйте каталог в PATH, когда он уже находится в PATH. Эта проверка рассматривает «~ /» и «/ home / user / ' Быть другим.

На ваш вопрос 1 ... да, это правда; каждый конкретный каталог должен быть выделен индивидуально в PATH ..

На ваш вопрос 2 ... Вот сценарий, который сделает то, что вы хотите. Я тестировал его , но в его нынешнем виде он сделает новый PATH для текущей сессии. Чтобы сделать его постоянным, вы можете использовать export PATH (но я немного отрывочен по деталям export)

#
# name: path-add-dirs
# eg: $ path-add-dirs "$HOME/bin" "tilde" 1

# When directories are $HOME based, choose format.
# Add directories in tidle format: ~/...
#       ...or as fullly-qualified: /home/user/...

# mode values: "tilde", or  anything else for fully-qualified   
mode="$2" # valid mode values: "tilde", or  anything else   
maindir="$1"; dirs= ; echo
# Buld string of subdirectories to a depth/level of 1  
while IFS= read -r dir ; do
  # Don't add directory if it is already in PATH
  if [[ "$mode" == "tilde" ]] ; then
    # replace only a *leading* :/home/user/ 
    homecheck=":$dir"                    
    dircheck="${homecheck/:$HOME\//:~/}"
    dircheck="${dircheck#:}"
  else
    dircheck="${dir}"
  fi;
  pathcheck=":$PATH:"
  if [[ "$pathcheck" != "${pathcheck/:$dircheck:/}" ]] ; then  
    echo "ALREADY IN PATH: $dircheck"
  else
    dirs="$dirs:$dir"  
    echo " added: $dircheck"
  fi
done < <(tree --noreport -L $3 -fi -d "$maindir")
# Choose one of these two options
if [[ "$mode" == "tilde" ]] 
then PATH="$PATH${dirs//:$HOME\//:~/}" # change :$HOME to :~/ 
else PATH="$PATH$dirs" # this method has fully expanded $HOME
fi
echo
echo "$PATH"
echo
5
ответ дан 25 May 2018 в 22:17

Этот скрипт использует tree ...

sudo apt-get install tree

Вы можете изменить глубину каталогов, изменив -L 1, и вы можете выбрать, использовать или не использовать ~/ ...

UPDATE 2: .. модифицировал скрипт, чтобы заменить только ведущий / home / user / (не «any») .. и добавил args. .

UPDATE 2 Добавлена ​​проверка: .. Не добавляйте каталог в PATH, когда он уже находится в PATH. Эта проверка рассматривает «~ /» и «/ home / user / ' Быть другим.

На ваш вопрос 1 ... да, это правда; каждый конкретный каталог должен быть выделен индивидуально в PATH ..

На ваш вопрос 2 ... Вот сценарий, который сделает то, что вы хотите. Я тестировал его , но в его нынешнем виде он сделает новый PATH для текущей сессии. Чтобы сделать его постоянным, вы можете использовать export PATH (но я немного отрывочен по деталям export)

# # name: path-add-dirs # eg: $ path-add-dirs "$HOME/bin" "tilde" 1 # When directories are $HOME based, choose format. # Add directories in tidle format: ~/... # ...or as fullly-qualified: /home/user/... # mode values: "tilde", or anything else for fully-qualified mode="$2" # valid mode values: "tilde", or anything else maindir="$1"; dirs= ; echo # Buld string of subdirectories to a depth/level of 1 while IFS= read -r dir ; do # Don't add directory if it is already in PATH if [[ "$mode" == "tilde" ]] ; then # replace only a *leading* :/home/user/ homecheck=":$dir" dircheck="${homecheck/:$HOME\//:~/}" dircheck="${dircheck#:}" else dircheck="${dir}" fi; pathcheck=":$PATH:" if [[ "$pathcheck" != "${pathcheck/:$dircheck:/}" ]] ; then echo "ALREADY IN PATH: $dircheck" else dirs="$dirs:$dir" echo " added: $dircheck" fi done < <(tree --noreport -L $3 -fi -d "$maindir") # Choose one of these two options if [[ "$mode" == "tilde" ]] then PATH="$PATH${dirs//:$HOME\//:~/}" # change :$HOME to :~/ else PATH="$PATH$dirs" # this method has fully expanded $HOME fi echo echo "$PATH" echo
5
ответ дан 25 July 2018 в 22:16

Этот скрипт использует tree ...

sudo apt-get install tree

Вы можете изменить глубину каталогов, изменив -L 1, и вы можете выбрать, использовать или не использовать ~/ ...

UPDATE 2: .. модифицировал скрипт, чтобы заменить только ведущий / home / user / (не «any») .. и добавил args. .

UPDATE 2 Добавлена ​​проверка: .. Не добавляйте каталог в PATH, когда он уже находится в PATH. Эта проверка рассматривает «~ /» и «/ home / user / ' Быть другим.

На ваш вопрос 1 ... да, это правда; каждый конкретный каталог должен быть выделен индивидуально в PATH ..

На ваш вопрос 2 ... Вот сценарий, который сделает то, что вы хотите. Я тестировал его , но в его нынешнем виде он сделает новый PATH для текущей сессии. Чтобы сделать его постоянным, вы можете использовать export PATH (но я немного отрывочен по деталям export)

# # name: path-add-dirs # eg: $ path-add-dirs "$HOME/bin" "tilde" 1 # When directories are $HOME based, choose format. # Add directories in tidle format: ~/... # ...or as fullly-qualified: /home/user/... # mode values: "tilde", or anything else for fully-qualified mode="$2" # valid mode values: "tilde", or anything else maindir="$1"; dirs= ; echo # Buld string of subdirectories to a depth/level of 1 while IFS= read -r dir ; do # Don't add directory if it is already in PATH if [[ "$mode" == "tilde" ]] ; then # replace only a *leading* :/home/user/ homecheck=":$dir" dircheck="${homecheck/:$HOME\//:~/}" dircheck="${dircheck#:}" else dircheck="${dir}" fi; pathcheck=":$PATH:" if [[ "$pathcheck" != "${pathcheck/:$dircheck:/}" ]] ; then echo "ALREADY IN PATH: $dircheck" else dirs="$dirs:$dir" echo " added: $dircheck" fi done < <(tree --noreport -L $3 -fi -d "$maindir") # Choose one of these two options if [[ "$mode" == "tilde" ]] then PATH="$PATH${dirs//:$HOME\//:~/}" # change :$HOME to :~/ else PATH="$PATH$dirs" # this method has fully expanded $HOME fi echo echo "$PATH" echo
5
ответ дан 2 August 2018 в 03:44

Этот скрипт использует tree ...

sudo apt-get install tree

Вы можете изменить глубину каталогов, изменив -L 1, и вы можете выбрать, использовать или не использовать ~/ ...

UPDATE 2: .. модифицировал скрипт, чтобы заменить только ведущий / home / user / (не «any») .. и добавил args. .

UPDATE 2 Добавлена ​​проверка: .. Не добавляйте каталог в PATH, когда он уже находится в PATH. Эта проверка рассматривает «~ /» и «/ home / user / ' Быть другим.

На ваш вопрос 1 ... да, это правда; каждый конкретный каталог должен быть выделен индивидуально в PATH ..

На ваш вопрос 2 ... Вот сценарий, который сделает то, что вы хотите. Я тестировал его , но в его нынешнем виде он сделает новый PATH для текущей сессии. Чтобы сделать его постоянным, вы можете использовать export PATH (но я немного отрывочен по деталям export)

# # name: path-add-dirs # eg: $ path-add-dirs "$HOME/bin" "tilde" 1 # When directories are $HOME based, choose format. # Add directories in tidle format: ~/... # ...or as fullly-qualified: /home/user/... # mode values: "tilde", or anything else for fully-qualified mode="$2" # valid mode values: "tilde", or anything else maindir="$1"; dirs= ; echo # Buld string of subdirectories to a depth/level of 1 while IFS= read -r dir ; do # Don't add directory if it is already in PATH if [[ "$mode" == "tilde" ]] ; then # replace only a *leading* :/home/user/ homecheck=":$dir" dircheck="${homecheck/:$HOME\//:~/}" dircheck="${dircheck#:}" else dircheck="${dir}" fi; pathcheck=":$PATH:" if [[ "$pathcheck" != "${pathcheck/:$dircheck:/}" ]] ; then echo "ALREADY IN PATH: $dircheck" else dirs="$dirs:$dir" echo " added: $dircheck" fi done < <(tree --noreport -L $3 -fi -d "$maindir") # Choose one of these two options if [[ "$mode" == "tilde" ]] then PATH="$PATH${dirs//:$HOME\//:~/}" # change :$HOME to :~/ else PATH="$PATH$dirs" # this method has fully expanded $HOME fi echo echo "$PATH" echo
5
ответ дан 4 August 2018 в 19:48

Этот скрипт использует tree ...

  • sudo apt-get install tree

] Вы можете изменить глубину каталогов, изменив -L 1 , и вы можете выбрать, использовать или не использовать ~ / ...

UPDATE 2 : .. изменил скрипт, чтобы заменить только ведущий / home / user / (не «any») .. и добавил args ..

UPDATE Добавлена ​​проверка: .. Не добавляйте каталог в PATH, когда это уже в PATH .. Эта проверка считает, что «~ /» и «/ home / user /» отличаются.

На ваш вопрос 1 ... да, это правда; каждый конкретный каталог должен быть выделен отдельно в PATH ..

На ваш вопрос 2 ... Вот сценарий, который будет делать то, что вы хотите. Я протестировал его, но, поскольку он стоит, он будет сделайте новый PATH для текущего сеанса .. Чтобы сделать его постоянным, вы можете использовать экспорт [p4] экспорта PATH (но я немного отрывочен по деталям экспорта )

  # # name: path-add-dirs # eg: $ path-add-dirs "$ HOME / bin" "tilde" 1 # Когда каталоги основаны на $ HOME, выберите формат.  # Добавить каталоги в формате tidle: ~ / ... # ... или как полностью квалифицированные: / home / user / ... # mode values: "tilde" или что-то еще для полностью квалифицированного режима = "$ 2"  # значения действительного режима: «тильда» или что-то еще maindir = «$ 1»;  dirs =;  echo # Buld string поддиректорий на глубину / уровень 1, в то время как IFS = read -r dir;  do # Не добавляйте каталог, если он уже находится в PATH, если [["$ mode" == "tilde"]];  затем # заменить только * ведущий *: / home / user / homecheck = ": $ dir" dircheck = "$ {homecheck /: $ HOME \ //: ~ /}" dircheck = "$ {dircheck #:}" else  dircheck = "$ {dir}" fi;  pathcheck = ": $ PATH:" if [["$ pathcheck"! = "$ {pathcheck /: $ dircheck: /}"]];  затем эхо "УЖЕ В ПУТЕ: $ dircheck" else dirs = "$ dirs: $ dir" echo "добавлено: $ dircheck" fi done & lt;  & lt; (tree -noreport -L $ 3 -fi -d "$ maindir") # Выберите один из этих двух вариантов, если [["$ mode" == "tilde"]], затем PATH = "$ PATH $ {dirs /  /: $ HOME \ //: ~ /} "# change: $ HOME to: ~ / else PATH =" $ PATH $ dirs "# этот метод полностью расширил $ ​​HOME fi echo echo" $ PATH "echo   
5
ответ дан 6 August 2018 в 03:52

Этот скрипт использует tree ...

  • sudo apt-get install tree

] Вы можете изменить глубину каталогов, изменив -L 1 , и вы можете выбрать, использовать или не использовать ~ / ...

UPDATE 2 : .. изменил скрипт, чтобы заменить только ведущий / home / user / (не «any») .. и добавил args ..

UPDATE Добавлена ​​проверка: .. Не добавляйте каталог в PATH, когда это уже в PATH .. Эта проверка считает, что «~ /» и «/ home / user /» отличаются.

На ваш вопрос 1 ... да, это правда; каждый конкретный каталог должен быть выделен отдельно в PATH ..

На ваш вопрос 2 ... Вот сценарий, который будет делать то, что вы хотите. Я протестировал его, но, поскольку он стоит, он будет сделайте новый PATH для текущего сеанса .. Чтобы сделать его постоянным, вы можете использовать экспорт [p4] экспорта PATH (но я немного отрывочен по деталям экспорта )

  # # name: path-add-dirs # eg: $ path-add-dirs "$ HOME / bin" "tilde" 1 # Когда каталоги основаны на $ HOME, выберите формат.  # Добавить каталоги в формате tidle: ~ / ... # ... или как полностью квалифицированные: / home / user / ... # mode values: "tilde" или что-то еще для полностью квалифицированного режима = "$ 2"  # значения действительного режима: «тильда» или что-то еще maindir = «$ 1»;  dirs =;  echo # Buld string поддиректорий на глубину / уровень 1, в то время как IFS = read -r dir;  do # Не добавляйте каталог, если он уже находится в PATH, если [["$ mode" == "tilde"]];  затем # заменить только * ведущий *: / home / user / homecheck = ": $ dir" dircheck = "$ {homecheck /: $ HOME \ //: ~ /}" dircheck = "$ {dircheck #:}" else  dircheck = "$ {dir}" fi;  pathcheck = ": $ PATH:" if [["$ pathcheck"! = "$ {pathcheck /: $ dircheck: /}"]];  затем эхо "УЖЕ В ПУТЕ: $ dircheck" else dirs = "$ dirs: $ dir" echo "добавлено: $ dircheck" fi done & lt;  & lt; (tree -noreport -L $ 3 -fi -d "$ maindir") # Выберите один из этих двух вариантов, если [["$ mode" == "tilde"]], затем PATH = "$ PATH $ {dirs /  /: $ HOME \ //: ~ /} "# change: $ HOME to: ~ / else PATH =" $ PATH $ dirs "# этот метод полностью расширил $ ​​HOME fi echo echo" $ PATH "echo   
5
ответ дан 7 August 2018 в 21:48

Этот скрипт использует tree ...

  • sudo apt-get install tree

] Вы можете изменить глубину каталогов, изменив -L 1 , и вы можете выбрать, использовать или не использовать ~ / ...

UPDATE 2 : .. изменил скрипт, чтобы заменить только ведущий / home / user / (не «any») .. и добавил args ..

UPDATE Добавлена ​​проверка: .. Не добавляйте каталог в PATH, когда это уже в PATH .. Эта проверка считает, что «~ /» и «/ home / user /» отличаются.

На ваш вопрос 1 ... да, это правда; каждый конкретный каталог должен быть выделен отдельно в PATH ..

На ваш вопрос 2 ... Вот сценарий, который будет делать то, что вы хотите. Я протестировал его, но, поскольку он стоит, он будет сделайте новый PATH для текущего сеанса .. Чтобы сделать его постоянным, вы можете использовать экспорт [p4] экспорта PATH (но я немного отрывочен по деталям экспорта )

  # # name: path-add-dirs # eg: $ path-add-dirs "$ HOME / bin" "tilde" 1 # Когда каталоги основаны на $ HOME, выберите формат.  # Добавить каталоги в формате tidle: ~ / ... # ... или как полностью квалифицированные: / home / user / ... # mode values: "tilde" или что-то еще для полностью квалифицированного режима = "$ 2"  # значения действительного режима: «тильда» или что-то еще maindir = «$ 1»;  dirs =;  echo # Buld string поддиректорий на глубину / уровень 1, в то время как IFS = read -r dir;  do # Не добавляйте каталог, если он уже находится в PATH, если [["$ mode" == "tilde"]];  затем # заменить только * ведущий *: / home / user / homecheck = ": $ dir" dircheck = "$ {homecheck /: $ HOME \ //: ~ /}" dircheck = "$ {dircheck #:}" else  dircheck = "$ {dir}" fi;  pathcheck = ": $ PATH:" if [["$ pathcheck"! = "$ {pathcheck /: $ dircheck: /}"]];  затем эхо "УЖЕ В ПУТЕ: $ dircheck" else dirs = "$ dirs: $ dir" echo "добавлено: $ dircheck" fi done & lt;  & lt; (tree -noreport -L $ 3 -fi -d "$ maindir") # Выберите один из этих двух вариантов, если [["$ mode" == "tilde"]], затем PATH = "$ PATH $ {dirs /  /: $ HOME \ //: ~ /} "# change: $ HOME to: ~ / else PATH =" $ PATH $ dirs "# этот метод полностью расширил $ ​​HOME fi echo echo" $ PATH "echo   
5
ответ дан 10 August 2018 в 10:02

Этот скрипт использует tree ...

  • sudo apt-get install tree

] Вы можете изменить глубину каталогов, изменив -L 1 , и вы можете выбрать, использовать или не использовать ~ / ...

UPDATE 2 : .. изменил скрипт, чтобы заменить только ведущий / home / user / (не «any») .. и добавил args ..

UPDATE Добавлена ​​проверка: .. Не добавляйте каталог в PATH, когда это уже в PATH .. Эта проверка считает, что «~ /» и «/ home / user /» отличаются.

На ваш вопрос 1 ... да, это правда; каждый конкретный каталог должен быть выделен отдельно в PATH ..

На ваш вопрос 2 ... Вот сценарий, который будет делать то, что вы хотите. Я протестировал его, но, поскольку он стоит, он будет сделайте новый PATH для текущего сеанса .. Чтобы сделать его постоянным, вы можете использовать экспорт [p4] экспорта PATH (но я немного отрывочен по деталям экспорта )

  # # name: path-add-dirs # eg: $ path-add-dirs "$ HOME / bin" "tilde" 1 # Когда каталоги основаны на $ HOME, выберите формат.  # Добавить каталоги в формате tidle: ~ / ... # ... или как полностью квалифицированные: / home / user / ... # mode values: "tilde" или что-то еще для полностью квалифицированного режима = "$ 2"  # значения действительного режима: «тильда» или что-то еще maindir = «$ 1»;  dirs =;  echo # Buld string поддиректорий на глубину / уровень 1, в то время как IFS = read -r dir;  do # Не добавляйте каталог, если он уже находится в PATH, если [["$ mode" == "tilde"]];  затем # заменить только * ведущий *: / home / user / homecheck = ": $ dir" dircheck = "$ {homecheck /: $ HOME \ //: ~ /}" dircheck = "$ {dircheck #:}" else  dircheck = "$ {dir}" fi;  pathcheck = ": $ PATH:" if [["$ pathcheck"! = "$ {pathcheck /: $ dircheck: /}"]];  затем эхо "УЖЕ В ПУТЕ: $ dircheck" else dirs = "$ dirs: $ dir" echo "добавлено: $ dircheck" fi done & lt;  & lt; (tree -noreport -L $ 3 -fi -d "$ maindir") # Выберите один из этих двух вариантов, если [["$ mode" == "tilde"]], затем PATH = "$ PATH $ {dirs /  /: $ HOME \ //: ~ /} "# change: $ HOME to: ~ / else PATH =" $ PATH $ dirs "# этот метод полностью расширил $ ​​HOME fi echo echo" $ PATH "echo   
5
ответ дан 13 August 2018 в 16:21

Это невозможно, потому что системы на базе UNIX не предназначены для такой работы. Как правило, все исполняемые файлы входят в небольшое количество каталогов. Например, все материалы, которые я пишу для своих целей, отправляются в ~ / bin.

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

Наличие всех подкаталогов в $ PATH не является особенно желательным, поскольку оно просто добавляет больше каталогов для поиска, увеличивает риск получения других исполняемых файлов в вашей PATH, не должно быть там, и на самом деле не дает большой пользы.

2
ответ дан 25 May 2018 в 22:17

Это должно выполнить задание

PATH="$PATH:$(find ~/bin -type d -printf ":%p")"

Пожалуйста, учтите, что

Будет пройдено все дерево каталогов, что может занять некоторое время, поэтому постарайтесь сохранить иерархию маленький. Это не будет учитывать каталоги, созданные после установки PATH. Если вы вызываете это несколько раз, в PATH будет много дубликатов. Возможно, вы захотите присвоить исходную PATH некоторой временной переменной (например OLD_PATH).
2
ответ дан 25 May 2018 в 22:17
  • 1
    Две ошибки: это не добавление абсолютных путей - & gt; не работает правильно. Кроме того, он добавляет два двойных двоеточия. Удалить: после $ PATH. – Olli 3 April 2011 в 15:59

Нет, это невозможно в простой форме. Будет ли возможность добавлять программные ссылки ко всем исполняемым файлам в «~ / my_program / bin»?

1
ответ дан 25 May 2018 в 22:17

Нет, это невозможно в простой форме. Будет ли возможность добавлять программные ссылки ко всем исполняемым файлам в «~ / my_program / bin»?

1
ответ дан 25 July 2018 в 22:16

Это невозможно, потому что системы на базе UNIX не предназначены для такой работы. Как правило, все исполняемые файлы входят в небольшое количество каталогов. Например, все материалы, которые я пишу для своих целей, отправляются в ~ / bin.

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

Наличие всех подкаталогов в $ PATH не является особенно желательным, поскольку оно просто добавляет больше каталогов для поиска, увеличивает риск получения других исполняемых файлов в вашей PATH, не должно быть там, и на самом деле не дает большой пользы.

2
ответ дан 25 July 2018 в 22:16

Это должно выполнить задание

PATH="$PATH:$(find ~/bin -type d -printf ":%p")"

Пожалуйста, учтите, что

Будет пройдено все дерево каталогов, что может занять некоторое время, поэтому постарайтесь сохранить иерархию маленький. Это не будет учитывать каталоги, созданные после установки PATH. Если вы вызываете это несколько раз, в PATH будет много дубликатов. Возможно, вы захотите присвоить исходную PATH некоторой временной переменной (например OLD_PATH).
2
ответ дан 25 July 2018 в 22:16
  • 1
    Две ошибки: это не добавление абсолютных путей - & gt; не работает правильно. Кроме того, он добавляет два двойных двоеточия. Удалить: после $ PATH. – Olli 3 April 2011 в 15:59

Нет, это невозможно в простой форме. Будет ли возможность добавлять программные ссылки ко всем исполняемым файлам в «~ / my_program / bin»?

1
ответ дан 2 August 2018 в 03:44

Это невозможно, потому что системы на базе UNIX не предназначены для такой работы. Как правило, все исполняемые файлы входят в небольшое количество каталогов. Например, все материалы, которые я пишу для своих целей, отправляются в ~ / bin.

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

Наличие всех подкаталогов в $ PATH не является особенно желательным, поскольку оно просто добавляет больше каталогов для поиска, увеличивает риск получения других исполняемых файлов в вашей PATH, не должно быть там, и на самом деле не дает большой пользы.

2
ответ дан 2 August 2018 в 03:44

Это должно выполнить задание

PATH="$PATH:$(find ~/bin -type d -printf ":%p")"

Пожалуйста, учтите, что

Будет пройдено все дерево каталогов, что может занять некоторое время, поэтому постарайтесь сохранить иерархию маленький. Это не будет учитывать каталоги, созданные после установки PATH. Если вы вызываете это несколько раз, в PATH будет много дубликатов. Возможно, вы захотите присвоить исходную PATH некоторой временной переменной (например OLD_PATH).
2
ответ дан 2 August 2018 в 03:44
  • 1
    Две ошибки: это не добавление абсолютных путей - & gt; не работает правильно. Кроме того, он добавляет два двойных двоеточия. Удалить: после $ PATH. – Olli 3 April 2011 в 15:59

Нет, это невозможно в простой форме. Будет ли возможность добавлять программные ссылки ко всем исполняемым файлам в «~ / my_program / bin»?

1
ответ дан 4 August 2018 в 19:48

Это невозможно, потому что системы на базе UNIX не предназначены для такой работы. Как правило, все исполняемые файлы входят в небольшое количество каталогов. Например, все материалы, которые я пишу для своих целей, отправляются в ~ / bin.

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

Наличие всех подкаталогов в $ PATH не является особенно желательным, поскольку оно просто добавляет больше каталогов для поиска, увеличивает риск получения других исполняемых файлов в вашей PATH, не должно быть там, и на самом деле не дает большой пользы.

2
ответ дан 4 August 2018 в 19:48

Это должно выполнить задание

PATH="$PATH:$(find ~/bin -type d -printf ":%p")"

Пожалуйста, учтите, что

Будет пройдено все дерево каталогов, что может занять некоторое время, поэтому постарайтесь сохранить иерархию маленький. Это не будет учитывать каталоги, созданные после установки PATH. Если вы вызываете это несколько раз, в PATH будет много дубликатов. Возможно, вы захотите присвоить исходную PATH некоторой временной переменной (например OLD_PATH).
2
ответ дан 4 August 2018 в 19:48
  • 1
    Две ошибки: это не добавление абсолютных путей - & gt; не работает правильно. Кроме того, он добавляет два двойных двоеточия. Удалить: после $ PATH. – Olli 3 April 2011 в 15:59

Это невозможно, потому что системы на базе UNIX не предназначены для такой работы. Как правило, все исполняемые файлы входят в небольшое количество каталогов. Например, все материалы, которые я пишу для своих целей, отправляются в ~ / bin.

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

Наличие всех подкаталогов в $ PATH не является особенно желательным, поскольку оно просто добавляет больше каталогов для поиска, увеличивает риск получения других исполняемых файлов в вашей PATH, не должно быть там, и на самом деле не дает большой пользы.

2
ответ дан 6 August 2018 в 03:52

Это должно выполнить задание

  PATH = "$ PATH: $ (find ~ / bin -type d -printf":% p ")"  

Пожалуйста, учтите, что

  • Будет пройдено все дерево каталогов, что может занять некоторое время, поэтому старайтесь держать иерархию маленькой.
  • t учитывайте каталоги, созданные после установки PATH.
  • Если вы вызываете это несколько раз, в PATH будет много дубликатов. Вы можете назначить исходную PATH некоторой временной переменной (например OLD_PATH).
2
ответ дан 6 August 2018 в 03:52

Нет, это невозможно в простой форме. Будет ли возможность добавлять программные ссылки ко всем исполняемым файлам в «~ / my_program / bin»?

1
ответ дан 6 August 2018 в 03:52

Это должно выполнить задание

  PATH = "$ PATH: $ (find ~ / bin -type d -printf":% p ")"  

Пожалуйста, учтите, что

  • Будет пройдено все дерево каталогов, что может занять некоторое время, поэтому старайтесь держать иерархию маленькой.
  • t учитывайте каталоги, созданные после установки PATH.
  • Если вы вызываете это несколько раз, в PATH будет много дубликатов. Вы можете назначить исходную PATH некоторой временной переменной (например OLD_PATH).
2
ответ дан 7 August 2018 в 21:48

Это невозможно, потому что системы на базе UNIX не предназначены для такой работы. Как правило, все исполняемые файлы входят в небольшое количество каталогов. Например, все материалы, которые я пишу для своих целей, отправляются в ~ / bin.

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

Наличие всех подкаталогов в $ PATH не является особенно желательным, поскольку оно просто добавляет больше каталогов для поиска, увеличивает риск получения других исполняемых файлов в вашей PATH, не должно быть там, и на самом деле не дает большой пользы.

2
ответ дан 7 August 2018 в 21:48

Нет, это невозможно в простой форме. Будет ли возможность добавлять программные ссылки ко всем исполняемым файлам в «~ / my_program / bin»?

1
ответ дан 7 August 2018 в 21:48

Нет, это невозможно в простой форме. Будет ли возможность добавлять программные ссылки ко всем исполняемым файлам в «~ / my_program / bin»?

1
ответ дан 10 August 2018 в 10:02

Это невозможно, потому что системы на базе UNIX не предназначены для такой работы. Как правило, все исполняемые файлы входят в небольшое количество каталогов. Например, все материалы, которые я пишу для своих целей, отправляются в ~ / bin.

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

Наличие всех подкаталогов в $ PATH не является особенно желательным, поскольку оно просто добавляет больше каталогов для поиска, увеличивает риск получения других исполняемых файлов в вашей PATH, не должно быть там, и на самом деле не дает большой пользы.

2
ответ дан 10 August 2018 в 10:02

Это должно выполнить задание

  PATH = "$ PATH: $ (find ~ / bin -type d -printf":% p ")"  

Пожалуйста, учтите, что

  • Будет пройдено все дерево каталогов, что может занять некоторое время, поэтому старайтесь держать иерархию маленькой.
  • t учитывайте каталоги, созданные после установки PATH.
  • Если вы вызываете это несколько раз, в PATH будет много дубликатов. Вы можете назначить исходную PATH некоторой временной переменной (например OLD_PATH).
2
ответ дан 10 August 2018 в 10:02

Это невозможно, потому что системы на базе UNIX не предназначены для такой работы. Как правило, все исполняемые файлы входят в небольшое количество каталогов. Например, все материалы, которые я пишу для своих целей, отправляются в ~ / bin.

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

Наличие всех подкаталогов в $ PATH не является особенно желательным, поскольку оно просто добавляет больше каталогов для поиска, увеличивает риск получения других исполняемых файлов в вашей PATH, не должно быть там, и на самом деле не дает большой пользы.

2
ответ дан 13 August 2018 в 16:21

Другие вопросы по тегам:

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