Можно сделать следующее:
#!/bin/bash
cd /your/project/directory
# start another shell and replacing the current
exec /bin/bash
РЕДАКТИРОВАНИЕ: Это могло быть 'отмечено точкой' также, для предотвращения создания последующих оболочек.
Пример:
. ./previous_script (with or without the first line)
На самом деле, этого почти всегда стоит избегать. Основное допустимое время, когда это может быть полезно, - это при работе с внешней библиотекой (с другого языка), которая имеет класс / etc, который является ключевым словом C #, но я признаю, что у меня есть никогда никогда не сталкивался с этой проблемой. Помогает то, что C # позволяет вам переименовывать имена аргументов методов при переопределении / реализации интерфейсов, чтобы избежать одного общего набора случаев.
Другое (возможно, ленивое) использование - в генерации кода; Если вы всегда добавляете префикс к полям / переменным / и т. д. с помощью @theName, вам не нужно беспокоиться об особых случаях. Лично я просто проверяю список ключевых слов / контекстных ключевых слов C # и добавляю что-то вроде подчеркивания.
Другое использование символа @ (дословные строковые литералы) - @ "
Как отмечали другие, @ -quoting может быть очень полезен со строками. Вот несколько примеров:
// Not having to escape backslashes.
String a = @"C:\Windows\System32";
// Escaping quotes.
String b = @"The message is ""{0}"".";
// String with embedded newlines.
String c = @"An error occured.
Please try again later.
";
Я использовал его в представлениях asp.net MVC, где вы определяете класс css с помощью HtmlHelper.
<%= Html.TextBox("Name", null, new { @class = "form-field" }) %>
Я думаю использовать зарезервированные ключевые слова в качестве имен переменных - плохая идея. ИМХО это делает код менее читабельным. Хотя есть случаи, когда это может пригодиться. Например, в представлении ASP.NET MVC вы можете написать:
<%= Html.TextBox("name", new { @class = "some_css_class" }) %>
Я использовал и видел, как он используется только со строками, например:
string name=@"some funny name";
Никогда не знал об этом, но из того, что вы говорите, я бы избежать этого.
Я использую @ в C # только для предварительно отформатированных строк.
@"String\no\need\to\escape\slashes"
Вы можете безопасно избежать всего, что создает путаницу. : -)
Единственное место, где я использую @, - это строки. Преимущество @ -quoting заключается в том, что escape-последовательности не обрабатываются, что упрощает запись, например, полного имени файла:
@ "c: \ Docs \ Source \ a.txt" // вместо "c: \\ Docs \\ Source \\ a.txt"
Я избегаю этого, за исключением методов расширения, где я думаю, что это улучшает читаемость:
public static void Foo(this object @this)
{
Console.WriteLine(@this.ToString());
}