10-25-2019
zsh is a really odd choice. It's a hodgepodge of features from bourne and csh, with its own special extensions. It's not comparable and not compatible.
I don't know why they needed a shell to be app-store compatible, but it probably isn't good. Perhaps they're ripping OSX apart and moving bits to the app store. It mMakes sense from a business point of view -- a good way to force everyone who's avoided the app store to use it. It makes sense from a software point of view -- why have two installer/updater systems?
10 More Discussions You Might Find Interesting
1. Solaris
I change my default shell to zsh but can't find the init files, .zshrc and .zlogin from /export/home and /home. The other shells init files are there:.cshrc, .profile and .login. Am I suppose to use these as templates?
Also, bash_history is there but not zsh_history although zsh do keep a... (2 Replies)
Discussion started by: maag
2 Replies
2. Shell Programming and Scripting
... Am I glad to find this forum (and vBulletin too, nice!)..
OK, here's my issue. I have been handballed a bash script, not pretty but functional. I need to change to csh and zsh. For the csh I have the basics (e.g., such as change if/fi to if/endif, quote the variables, and bracket commands).... (10 Replies)
Discussion started by: lev_lafayette
10 Replies
3. Shell Programming and Scripting
Hi! I am just starting to learn scripting.
I am trying a simple script in bash and zsh
I have two questions:
First: Why zsh does not expand the var M? What I am doing wrong?
localhost galanom # bash -c 'M="m1 m2 m3 m4 m5"; for x in $M; do echo "<$x>"; done'
<m1>
<m2>
<m3>
<m4>
<m5>... (1 Reply)
Discussion started by: galanom
1 Replies
4. Shell Programming and Scripting
Hi,
I would like to run following code in bash inside a zsh script. (In this case is output unfortunately very different if you run it in zsh).
I tried to put "bash" in front of the code but I obtained following error message "bash: do: No such file or directory
" eve though I merged the whole... (7 Replies)
Discussion started by: kamcamonty
7 Replies
5. Shell Programming and Scripting
Hello,
I am running a bash script to do an rsync back on a computer running MacOS High Sierra. This is the script I am using,
#!/bin/bash
# main backup location, trailing slash included
backup_loc="/Volumes/Archive_Volume/00_macos_backup/"
# generic backup function
function backup {... (12 Replies)
Discussion started by: LMHmedchem
12 Replies
6. OS X (Apple)
Sadly, I have turned off my access to the Apple Developers Beta program after installing macOS 10.15 Catalina a few days ago.
After the install, I rebooted by MacBook Air and it "hard froze" and we were heading out of town so I grabbed a backup MBA running Mojave.
Then, after getting back at... (10 Replies)
Discussion started by: Neo
10 Replies
7. Programming
On the NI-VISA boards there has been some frustration where folks cannot get NI-VISA to work on macOS Catalina because Catalina (macOS 10.15.x) is "not supported" by NI-VISA (for many months, it seems). Currently, the README shows:
NI-VISA 19.0 for macOS supports the following platforms:
... (10 Replies)
Discussion started by: Neo
10 Replies
8. Windows & DOS: Issues & Discussions
Just a quick note for macOS users.
I just installed (and removed) Parallels Desktop 15 Edition on my MacPro (2013) with 64GB memory and 12-cores, which is running the latest version of macOS Catalina as of this post. The reason for this install was to test some RIGOL test gear software which... (6 Replies)
Discussion started by: Neo
6 Replies
9. Programming
Currently have two ESP8266 modules testing some Blynk apps, whereI'm not so happy with the Blynk business model for developers, but that's another story.
So, with two of my ESP8266s currently "busy", I decided to work on the ESP32, and in particular the ESPWROOM32.
I installed the... (0 Replies)
Discussion started by: Neo
0 Replies
10. OS X (Apple)
MacPro (2013) 12-Core, 64GB RAM (today's crash):
panic(cpu 2 caller 0xffffff7f8b333ad5): userspace watchdog timeout: no successful checkins from com.apple.WindowServer in 120 seconds
service: com.apple.logd, total successful checkins since load (318824 seconds ago): 31883, last successful... (3 Replies)
Discussion started by: Neo
3 Replies
LEARN ABOUT DEBIAN
plack::builder
Plack::Builder(3pm) User Contributed Perl Documentation Plack::Builder(3pm)
NAME
Plack::Builder - OO and DSL to enable Plack Middlewares
SYNOPSIS
# in .psgi
use Plack::Builder;
my $app = sub { ... };
builder {
enable "Deflater";
enable "Session", store => "File";
enable "Debug", panels => [ qw(DBITrace Memory Timer) ];
enable "+My::Plack::Middleware";
$app;
};
# use URLMap
builder {
mount "/foo" => builder {
enable "Foo";
$app;
};
mount "/bar" => $app2;
mount "http://example.com/" => builder { $app3 };
};
# using OO interface
my $builder = Plack::Builder->new();
$builder->add_middleware('Foo', opt => 1);
$app = $builder->mount('/app' => $app);
$app = $builder->to_app($app);
DESCRIPTION
Plack::Builder gives you a quick domain specific language (DSL) to wrap your application with Plack::Middleware subclasses. The middleware
you're trying to use should use Plack::Middleware as a base class to use this DSL, inspired by Rack::Builder.
Whenever you call "enable" on any middleware, the middleware app is pushed to the stack inside the builder, and then reversed when it
actually creates a wrapped application handler. "Plack::Middleware::" is added as a prefix by default. So:
builder {
enable "Foo";
enable "Bar", opt => "val";
$app;
};
is syntactically equal to:
$app = Plack::Middleware::Bar->wrap($app, opt => "val");
$app = Plack::Middleware::Foo->wrap($app);
In other words, you're supposed to "enable" middleware from outer to inner.
INLINE MIDDLEWARE
Plack::Builder allows you to code middleware inline using a nested code reference.
If the first argument to "enable" is a code reference, it will be passed an $app and is supposed to return another code reference which is
PSGI application that consumes $env in runtime. So:
builder {
enable sub {
my $app = shift;
sub {
my $env = shift;
# do preprocessing
my $res = $app->($env);
# do postprocessing
return $res;
};
};
$app;
};
is equal to:
my $mw = sub {
my $app = shift;
sub { my $env = shift; $app->($env) };
};
$app = $mw->($app);
URLMap support
Plack::Builder has a native support for Plack::App::URLMap with "mount" method.
use Plack::Builder;
my $app = builder {
mount "/foo" => $app1;
mount "/bar" => builder {
enable "Foo";
$app2;
};
};
See Plack::App::URLMap's "map" method to see what they mean. With builder you can't use "map" as a DSL, for the obvious reason :)
NOTE: Once you use "mount" in your builder code, you have to use "mount" for all the paths, including the root path ("/"). You can't have
the default app in the last line of "builder" like:
my $app = sub {
my $env = shift;
...
};
builder {
mount "/foo" => sub { ... };
$app; # THIS DOESN'T WORK
};
You'll get warnings saying that your mount configuration will be ignored. Instead you should use "mount "/" => ..." in the last line to set
the default fallback app.
builder {
mount "/foo" => sub { ... };
mount "/" => $app;
}
Note that the "builder" DSL returns a whole new PSGI application, which means
o "builder { ... }" should normally the last statement of a ".psgi" file, because the return value of "builder" is the application that
actually is executed.
o You can nest your "builder" block, mixed with "mount" (see URLMap support above):
builder {
mount "/foo" => builder {
mount "/bar" => $app;
}
}
will locate the $app under "/foo/bar" since the inner "builder" block puts it under "/bar" and it results a new PSGI application which
is located under "/foo" because of the outer "builder" block.
CONDITIONAL MIDDLEWARE SUPPORT
You can use "enable_if" to conditionally enable middleware based on the runtime environment. See Plack::Middleware::Conditional for
details.
SEE ALSO
Plack::Middleware Plack::App::URLMap Plack::Middleware::Conditional
perl v5.14.2 2012-05-17 Plack::Builder(3pm)