Я не думаю, что dsfg - это «опечатка», я думаю, что это больше относится к ACRONYM для бесплатных руководств Debian (DFSG). Только мои два цента.
Определение функции влияет только на текущий экземпляр bash. Когда вы пишете
echo "myfunction ." | bash
, вы запускаете другой экземпляр bash. Вам нужно будет определить функцию в этом другом экземпляре.
Если у вас есть строка, содержащая имя функции и аргументы (если это необходимо), или, в более общем смысле, любую строку, содержащую исходный код оболочки, который вы хотите выполнить, используйте встроенный eval.
my_snippet='myfunction .'
eval "$my_snippet"
Если вы определяете функции в своем .bashrc, они доступны только в интерактивных оболочках, а не в скриптах.
[d4 ] Команда . (почти) эквивалентна source и не имеет ничего общего с ., что означает текущий каталог.Определение функции влияет только на текущий экземпляр bash. Когда вы пишете
echo "myfunction ." | bash
, вы запускаете другой экземпляр bash. Вам нужно будет определить функцию в этом другом экземпляре.
Если у вас есть строка, содержащая имя функции и аргументы (если это необходимо), или, в более общем смысле, любую строку, содержащую исходный код оболочки, который eval
Если вы определяете функции в своем .bashrc
, они доступны только в интерактивных оболочках, а не в скриптах.
] Команда .
(почти) эквивалентна source
и не имеет ничего общего с .
, что означает текущий каталог.
Определение функции влияет только на текущий экземпляр bash. Когда вы пишете
echo "myfunction ." | bash
, вы запускаете другой экземпляр bash. Вам нужно будет определить функцию в этом другом экземпляре.
Если у вас есть строка, содержащая имя функции и аргументы (если это необходимо), или, в более общем смысле, любую строку, содержащую исходный код оболочки, который eval
Если вы определяете функции в своем .bashrc
, они доступны только в интерактивных оболочках, а не в скриптах.
] Команда .
(почти) эквивалентна source
и не имеет ничего общего с .
, что означает текущий каталог.
Определение функции влияет только на текущий экземпляр bash. Когда вы пишете
echo "myfunction ." | bash
, вы запускаете другой экземпляр bash. Вам нужно будет определить функцию в этом другом экземпляре.
Если у вас есть строка, содержащая имя функции и аргументы (если это необходимо), или, в более общем смысле, любую строку, содержащую исходный код оболочки, который eval
Если вы определяете функции в своем .bashrc
, они доступны только в интерактивных оболочках, а не в скриптах.
] Команда .
(почти) эквивалентна source
и не имеет ничего общего с .
, что означает текущий каталог.
Определение функции влияет только на текущий экземпляр bash. Когда вы пишете
echo "myfunction ." | bash
, вы запускаете другой экземпляр bash. Вам нужно будет определить функцию в этом другом экземпляре.
Если у вас есть строка, содержащая имя функции и аргументы (если это необходимо), или, в более общем смысле, любую строку, содержащую исходный код оболочки, который eval
Если вы определяете функции в своем .bashrc
, они доступны только в интерактивных оболочках, а не в скриптах.
] Команда .
(почти) эквивалентна source
и не имеет ничего общего с .
, что означает текущий каталог.
Определение функции влияет только на текущий экземпляр bash. Когда вы пишете
echo "myfunction ." | bash
, вы запускаете другой экземпляр bash. Вам нужно будет определить функцию в этом другом экземпляре.
Если у вас есть строка, содержащая имя функции и аргументы (если это необходимо), или, в более общем смысле, любую строку, содержащую исходный код оболочки, который eval
Если вы определяете функции в своем .bashrc
, они доступны только в интерактивных оболочках, а не в скриптах.
] Команда .
(почти) эквивалентна source
и не имеет ничего общего с .
, что означает текущий каталог.
Определение функции влияет только на текущий экземпляр bash. Когда вы пишете
echo "myfunction ." | bash
, вы запускаете другой экземпляр bash. Вам нужно будет определить функцию в этом другом экземпляре.
Если у вас есть строка, содержащая имя функции и аргументы (если это необходимо), или, в более общем смысле, любую строку, содержащую исходный код оболочки, который eval
Если вы определяете функции в своем .bashrc
, они доступны только в интерактивных оболочках, а не в скриптах.
] Команда .
(почти) эквивалентна source
и не имеет ничего общего с .
, что означает текущий каталог.
Определение функции влияет только на текущий экземпляр bash. Когда вы пишете
echo "myfunction ." | bash
, вы запускаете другой экземпляр bash. Вам нужно будет определить функцию в этом другом экземпляре.
Если у вас есть строка, содержащая имя функции и аргументы (если это необходимо), или, в более общем смысле, любую строку, содержащую исходный код оболочки, который eval
Если вы определяете функции в своем .bashrc
, они доступны только в интерактивных оболочках, а не в скриптах.
] Команда .
(почти) эквивалентна source
и не имеет ничего общего с .
, что означает текущий каталог.
Вместо использования eval вы можете export выполнить свою функцию, чтобы она была унаследована подоболочками:
myfunction () { ls -R "$1" ; }
export -f myfunction
И тогда работает
echo "myfunction ." | bash
. [ ! d2]
echo "myfunction ." | sh, вероятно, не будет, если ваш / bin / sh не является символической ссылкой на bash.
bash и sh ожидают, что их аргумент будет исполняемым файлом, а не строкой.
Вы можете выполнить содержимое строки с помощью
eval "myfunction ."
Когда вы запускаете программу через оболочку, она обычно вызывает новый экземпляр bash (или sh, csh, zsh и т. д., если это необходимо), наследует все исходные настройки оболочки и запускается в новая оболочка. Это позволяет временно устанавливать переменные или изменять настройки без вмешательства в вашу среду.
source команда будет заставлять ее запускать текущую оболочку, поэтому любые изменения, которые она вносит в среду, будут сохраняться, когда выходы команды. . является синонимом source.
В большинстве случаев скрипт укажет, для какой оболочки он предназначен для запуска (например, #!/bin/bash в своей первой строке), и это вам не нужно явно вызывать bash.
Вместо использования eval
вы можете export
выполнить свою функцию, чтобы она наследовалась подоболочками:
myfunction () { ls -R "$1" ; }
export -f myfunction
И тогда работает
echo "myfunction ." | bash
.
echo "myfunction ." | sh
, вероятно, не будет, если ваш / bin / sh не является символической ссылкой на bash.
bash
и sh
ожидают, что их аргумент будет исполняемым файлом, а не строкой.
Вы можете выполнить содержимое строки с помощью
eval "myfunction ."
Когда вы запускаете программу через оболочку, она обычно вызывает новый экземпляр bash
(или sh
, csh
, zsh
и т. д., если это необходимо), наследует все исходные настройки оболочки и запускается в новая оболочка. Это позволяет временно устанавливать переменные или изменять настройки без вмешательства в вашу среду.
source
команда запустит ее в текущую оболочку, поэтому любые изменения, которые она внесет в среду, будут сохраняться, когда выходы команды. .
является синонимом source
.
В большинстве случаев скрипт будет определять, в какой оболочке он предназначен для запуска (например, #!/bin/bash
в его первой строке), и это вам не нужно явно указывать bash.
Вместо использования eval
вы можете export
выполнить свою функцию, чтобы она наследовалась подоболочками:
myfunction () { ls -R "$1" ; }
export -f myfunction
И тогда работает
echo "myfunction ." | bash
.
echo "myfunction ." | sh
, вероятно, не будет, если ваш / bin / sh не является символической ссылкой на bash.
bash
и sh
ожидают, что их аргумент будет исполняемым файлом, а не строкой.
Вы можете выполнить содержимое строки с помощью
eval "myfunction ."
Когда вы запускаете программу через оболочку, она обычно вызывает новый экземпляр bash
(или sh
, csh
, zsh
и т. д., если это необходимо), наследует все исходные настройки оболочки и запускается в новая оболочка. Это позволяет временно устанавливать переменные или изменять настройки без вмешательства в вашу среду.
source
команда запустит ее в текущую оболочку, поэтому любые изменения, которые она внесет в среду, будут сохраняться, когда выходы команды. .
является синонимом source
.
В большинстве случаев скрипт будет определять, в какой оболочке он предназначен для запуска (например, #!/bin/bash
в его первой строке), и это вам не нужно явно указывать bash.
Вместо использования eval
вы можете export
выполнить свою функцию, чтобы она наследовалась подоболочками:
myfunction () { ls -R "$1" ; }
export -f myfunction
И тогда работает
echo "myfunction ." | bash
.
echo "myfunction ." | sh
, вероятно, не будет, если ваш / bin / sh не является символической ссылкой на bash.
bash
и sh
ожидают, что их аргумент будет исполняемым файлом, а не строкой.
Вы можете выполнить содержимое строки с помощью
eval "myfunction ."
Когда вы запускаете программу через оболочку, она обычно вызывает новый экземпляр bash
(или sh
, csh
, zsh
и т. д., если это необходимо), наследует все исходные настройки оболочки и запускается в новая оболочка. Это позволяет временно устанавливать переменные или изменять настройки без вмешательства в вашу среду.
source
команда запустит ее в текущую оболочку, поэтому любые изменения, которые она внесет в среду, будут сохраняться, когда выходы команды. .
является синонимом source
.
В большинстве случаев скрипт будет определять, в какой оболочке он предназначен для запуска (например, #!/bin/bash
в его первой строке), и это вам не нужно явно указывать bash.
Вместо использования eval
вы можете export
выполнить свою функцию, чтобы она наследовалась подоболочками:
myfunction () { ls -R "$1" ; }
export -f myfunction
И тогда работает
echo "myfunction ." | bash
.
echo "myfunction ." | sh
, вероятно, не будет, если ваш / bin / sh не является символической ссылкой на bash.
bash
и sh
ожидают, что их аргумент будет исполняемым файлом, а не строкой.
Вы можете выполнить содержимое строки с помощью
eval "myfunction ."
Когда вы запускаете программу через оболочку, она обычно вызывает новый экземпляр bash
(или sh
, csh
, zsh
и т. д., если это необходимо), наследует все исходные настройки оболочки и запускается в новая оболочка. Это позволяет временно устанавливать переменные или изменять настройки без вмешательства в вашу среду.
source
команда запустит ее в текущую оболочку, поэтому любые изменения, которые она внесет в среду, будут сохраняться, когда выходы команды. .
является синонимом source
.
В большинстве случаев скрипт будет определять, в какой оболочке он предназначен для запуска (например, #!/bin/bash
в его первой строке), и это вам не нужно явно указывать bash.
Вместо использования eval
вы можете export
выполнить свою функцию, чтобы она наследовалась подоболочками:
myfunction () { ls -R "$1" ; }
export -f myfunction
И тогда работает
echo "myfunction ." | bash
.
echo "myfunction ." | sh
, вероятно, не будет, если ваш / bin / sh не является символической ссылкой на bash.
bash
и sh
ожидают, что их аргумент будет исполняемым файлом, а не строкой.
Вы можете выполнить содержимое строки с помощью
eval "myfunction ."
Когда вы запускаете программу через оболочку, она обычно вызывает новый экземпляр bash
(или sh
, csh
, zsh
и т. д., если это необходимо), наследует все исходные настройки оболочки и запускается в новая оболочка. Это позволяет временно устанавливать переменные или изменять настройки без вмешательства в вашу среду.
source
команда запустит ее в текущую оболочку, поэтому любые изменения, которые она внесет в среду, будут сохраняться, когда выходы команды. .
является синонимом source
.
В большинстве случаев скрипт будет определять, в какой оболочке он предназначен для запуска (например, #!/bin/bash
в его первой строке), и это вам не нужно явно указывать bash.
Вместо использования eval
вы можете export
выполнить свою функцию, чтобы она наследовалась подоболочками:
myfunction () { ls -R "$1" ; }
export -f myfunction
И тогда работает
echo "myfunction ." | bash
.
echo "myfunction ." | sh
, вероятно, не будет, если ваш / bin / sh не является символической ссылкой на bash.
bash
и sh
ожидают, что их аргумент будет исполняемым файлом, а не строкой.
Вы можете выполнить содержимое строки с помощью
eval "myfunction ."
Когда вы запускаете программу через оболочку, она обычно вызывает новый экземпляр bash
(или sh
, csh
, zsh
и т. д., если это необходимо), наследует все исходные настройки оболочки и запускается в новая оболочка. Это позволяет временно устанавливать переменные или изменять настройки без вмешательства в вашу среду.
source
команда запустит ее в текущую оболочку, поэтому любые изменения, которые она внесет в среду, будут сохраняться, когда выходы команды. .
является синонимом source
.
В большинстве случаев скрипт будет определять, в какой оболочке он предназначен для запуска (например, #!/bin/bash
в его первой строке), и это вам не нужно явно указывать bash.
Вместо использования eval
вы можете export
выполнить свою функцию, чтобы она наследовалась подоболочками:
myfunction () { ls -R "$1" ; }
export -f myfunction
И тогда работает
echo "myfunction ." | bash
.
echo "myfunction ." | sh
, вероятно, не будет, если ваш / bin / sh не является символической ссылкой на bash.
bash
и sh
ожидают, что их аргумент будет исполняемым файлом, а не строкой.
Вы можете выполнить содержимое строки с помощью
eval "myfunction ."
Когда вы запускаете программу через оболочку, она обычно вызывает новый экземпляр bash
(или sh
, csh
, zsh
и т. д., если это необходимо), наследует все исходные настройки оболочки и запускается в новая оболочка. Это позволяет временно устанавливать переменные или изменять настройки без вмешательства в вашу среду.
source
команда запустит ее в текущую оболочку, поэтому любые изменения, которые она внесет в среду, будут сохраняться, когда выходы команды. .
является синонимом source
.
В большинстве случаев скрипт будет определять, в какой оболочке он предназначен для запуска (например, #!/bin/bash
в его первой строке), и это вам не нужно явно указывать bash.
echo "myfunction ." | bash
, не передает myfunction .
в bash
в качестве аргумента командной строки. Он запускает bash и pipeing текст myfunction .
вместо стандартного ввода . Это совершенно другое дело.
– Eliah Kagan
4 June 2012 в 05:30